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

Meu codigo não da erro mas não retorna nada

Codigo do buscadorCursos.php:

<?php

require 'vendor/autoload.php';
require 'src/Buscador.php';
use Alura\BuscadorDeCursos\Buscador;
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;

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


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


foreach ($cursos as $curso) {
    echo $curso . PHP_EOL ;
}
?>

Codigo do Buscador.php:

<?php


namespace Alura\BuscadorDeCursos;

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

class Buscador {
    private $httpCliente;
    private $crawler;


    public function __construct(ClientInterface $httpCliente, Crawler $crawler){
        $this->httpCliente = $httpCliente;
        $this->crawler = $crawler;
    }

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

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

        $elementoscursos = $this->crawler->filter(selector:'span.course-card__name');
        $cursos = [];


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

        return $cursos;
    }

}

?>

Ja tentei adicionar um echo dentro dos foreachs para ver se eles estavam rodando mas não,

2 respostas
solução!

Oi Pedro,

O problema está na forma como você está adicionando os elementos ao array $cursos dentro do foreach no Buscador.php.

Você está usando +=, que é um operador de adição e atribuição, mas o que você quer é adicionar um novo elemento ao array.

O correto seria usar [] = para adicionar cada curso ao array.

Veja a correção:

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

Com essa alteração, seu código deve funcionar corretamente e exibir os nomes dos cursos. 👍

Para saber mais: Documentação do PHP sobre Arrays.

Continue praticando e explorando o mundo da programação! 💪

Deu certo!! A sua solução acabou resolvendo mais um dos outros problemas que publiquei aqui, agora esta rodando certinho obrigado