Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Código não retorna nada.

Arquivo buscar-cursos.php

<?php
require 'vendor/autoload.php';

use Alura\BuscadorDeCursos\Buscador;
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;

$client = new Client(
    [
        'base_uri' => 'https://www.alura.com.br/',
        'verify'=>false
    ]);

$crawler = new Crawler();

$buscador = new Buscador($client, $crawler);
$cursos = $buscador->buscar('/cursos-online-programacao/php');

foreach ($cursos as $curso) {
    echo $curso . PHP_EOL;
}

Arquivo buscador.php

<?php

namespace Alura\BuscadorDeCursos;

use GuzzleHttp\ClientInterface;
use Symfony\Component\DomCrawler\Crawler;

class Buscador
{
    private $httpClient;
    private $crawler;

    public function __construct(ClientInterface $httpClient, Crawler $crawler)
    {
        $this->httpClient = $httpClient;
        $this->crawler = $crawler;
    }

    public function buscar(string $url): array
    {
        $resposta = $this->httpClient->request('GET', $url);

        $html = $resposta->getBody();
        $this->crawler->addHtmlContent($html);

        $elementosCursos = $this->crawler->filter('span.card-curso__nome');
        $cursos = [];

        foreach ($elementosCursos as $elemento) {
            $curso[] = $elemento->textContent;
        }

        return $cursos;
    }
}

ao executar no terminal: imagem terminal

3 respostas
solução!

Opa, Igor. O erro tá nessa linha do seu Buscador:

$curso[] = $elemento->textContent;

Você está adicionando o conteúdo a uma variável $curso e depois você retorna $cursos. A variável que você retorna ($cursos) nunca é preenchida, entende? Só trocar $curso[] = $elemento->textContent; por $cursos[] = $elemento->textContent;.

PS.: Esse é o tipo de erro que seria pego pelo uso de uma IDE. ;-)

Opa vlw, Vinicius vou testar. E estou usando IDE do Vscode rs. Bom pelo menos vc me ajudou.. vlw

VSCode é um editor de código. Ele não faz uma análise estática da sua aplicação. Não que seja uma ferramenta ruim, só não é uma IDE. Talvez com algum plugin ele passe a fazer...

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software