Meu código funciona sem erros, porém não retorna nada na execução.
<?php
require 'vendor/autoload.php';
require 'src/Buscador.php';
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;
use Alura\BuscadordeCursos\Buscador;
$client = new \GuzzleHttp\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;
}
echo "Código funciona?";
no caso acima, ele apenas retorna o echo de teste - 'código funciona?'
codigo da classe:
<?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);
$elementos = $this->crawler->filter('span.card-curso_nome');
$cursos = [];
foreach($elementos as $elemento) {
$cursos[] = $elemento->textContent;
}
return $cursos;
}
}