Bom, essa é a única mensagem que ele mostra inúmeras vezes como Notice e PHP Notice, apontando erro no foreach do buscarCursos. Segue código.
buscarCursos.php
<?php
require 'vendor/autoload.php';
require 'src/Alura/BuscadorDeCursos/Buscador.php';
use Symfony\Component\DomCrawler\Crawler;
use src\Alura\BuscadorDeCursos\Buscador;
$client = new \GuzzleHttp\Client(['verify' => false,'base_uri' => 'https://www.alura.com.br/']);
$crawler = new Crawler();
$buscador = new Buscador($client, $crawler);
$cursos = $buscador->buscar('/cursos-online-programacao/php');
foreach ($cursos as $curso) {
echo $curso->textContent.PHP_EOL;
}
Buscador.php
<?php
namespace src\Alura\BuscadorDeCursos;
use GuzzleHttp\ClientInterface;
use Symfony\Component\DomCrawler\Crawler;
class Buscador
{
public function __construct(ClientInterface $httpClient, Crawler $crawler){
$this->httpClient = $httpClient;
$this->crawler = $crawler;
}
public function buscar (string $url): array {
$response = $this->httpClient->request('GET', $url);
$html = $response->getBody();
$this->crawler->addHtmlContent($html);
$elementosCursos = $this->crawler->filter('span.card-curso__nome');
$cursos = [];
foreach ($elementosCursos as $elementoCurso){
$cursos[] = $elementoCurso->textContent;
}
return $cursos;
}
}