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

Erro no tipo do Client

Bom dia. Fiz o código exatamente igual o da aula e me aparece esse erro:

Expected type 'GuzzleHttp\ClientInterface'. Found 'GuzzleHttp\Client'.

O que poderia ser?

o código abaixo

buscar-cursos.php

<?php
require "vendor/autoload.php";
require "src/Buscador.php";

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

$cliente = new Client(['base_uri' => 'https://www.alura.com.br/']);
$crawler = new Crawler(); 

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

foreach ($cursos as $curso) { //faz a lista e exibe na tela.
  echo $curso->textContent . PHP_EOL;
}

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);

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

      foreach ($elementoCurso as $elemento) {
        $cursos[] = $elemento->textContent;
      }
      return $cursos;
    }
  }

Obrigado.

6 respostas

Fala, Felipe! Muito estranho, cara.

Pra você não ficar travado nessa parte, troca o ClientInterface' porClient`.

Mas, vê no seu composer.json qual a versão do guzzle você tá usando, por favor?

Guzzle 6.3

Estranho, Felipe. É exatamente a mesma versão que eu usei no treinamento.

Você consegue colocar seu código no GitHub pra eu baixar aqui e testar?

Agora foi.

Não sei o motivo, mas funcionou.

solução!

Ué. Rsrsrs

Talvez tivesse algum errinho de digitação, cache no sistema de arquivos, algo assim...

Hahaha. Vai entender. Pelo menos funcionou. Valeu Vinicius.