Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Classe nao encontrada

segui todos os passos da aula e mesmo assim o php nao encontra a classe, segue os arquivos:

composer.json:

{
    "name": "gabrieldav1108/buscador-cursos",
    "description": "projeto que busca os cursos no site da Alura",
    "type": "library",
    "autoload": {
        "psr-4": {
            "Alura\\BuscadorCursos\\": "src/"
        }
    },
    "authors": [
        {
            "name": "Gabriel Davila",
            "email": "gabrielsdavila2@gmail.com"
        }
    ],
    "require": {
        "guzzlehttp/guzzle": "^7.8",
        "symfony/dom-crawler": "^7.0"
        
    }
}

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/']);
$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 Alura\BuscadorDeCursos;

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

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

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

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

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

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

        return $cursos;
    }
}

erro exibido:

PS C:\Users\User\Documents\Cursos\PHP\Composer\buscador-cursos-alura> php .\buscar-cursos.php             
PHP Fatal error:  Uncaught Error: Class "Alura\BuscadorDeCursos\Buscador" not found in C:\Users\User\Documents\Cursos\PHP\Composer\buscador-cursos-alura\buscar-cursos.php:11
Stack trace:
#0 {main}
  thrown in C:\Users\User\Documents\Cursos\PHP\Composer\buscador-cursos-alura\buscar-cursos.php on line 11

Fatal error: Uncaught Error: Class "Alura\BuscadorDeCursos\Buscador" not found in C:\Users\User\Documents\Cursos\PHP\Composer\buscador-cursos-alura\buscar-cursos.php:11
Stack trace:
#0 {main}
  thrown in C:\Users\User\Documents\Cursos\PHP\Composer\buscador-cursos-alura\buscar-cursos.php on line 11
1 resposta
solução!

Oi Gabriel,

No composer.json você especificou o namespace como BuscadorCurso, e depois no namespace da classe e no use tentou chamar BuscadorDeCurso

Tem "De" a mais ali

Você pode mudar aqui que deve funciuonar

"psr-4": {
            "Alura\\BuscadordECursos\\": "src/"
        }

Ademir Mazer

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