Por algum motivo minha classe está retornando o erro:
Fatal error: Uncaught TypeError: Argument 1 passed to Alura\BuscadorDeCursos\Buscador::__construct() must be an instance of Alura\BuscadorDeCursos\ClientInterface, instance of GuzzleHttp\Client given, called in C:\wamp64\www\buscador-cursos-alura\buscar-cursos.php on line 20 and defined in C:\wamp64\www\buscador-cursos-alura\src\Buscador.php on line 20.
\buscar-cursos.php
require 'vendor/autoload.php';
require 'src/Buscador.php';
use Alura\BuscadorDeCursos\Buscador;
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;
echo 'Iniciando requisição http....'. PHP_EOL;
//$client = new Client();
$client = new Client(['base_uri' => 'https://www.alura.com.br']);
//$client = new Client(['base_uri' => 'https://www.alura.com.br', 'verify' => false]);
$crawler = new Crawler();
echo 'Iniciando busca....'. PHP_EOL;
$buscador = new Buscador($client, $crawler);
$cursos = $buscador->buscar('/cursos-online-programacao/php');
foreach ($cursos as $curso) {
echo $curso. PHP_EOL;
}
src\Buscador.php
namespace Alura\BuscadorDeCursos;
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;
class Buscador
{
/**
* @var ClientInterface
*/
private $httpClient;
/**
* @var Crawler
*/
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) {
$cursos[] = $elemento->textContent;
}
return $cursos;
}
}