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

Erro - Expected type 'array'. Found 'void.' intelephense(1006)

Estou com erro na parte da função Buscar(), o código não está reconhecendo o retorno como array, estou usando o VSCode, segue:

<?php

namespace Alura\BuscadorDeCursos;

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

class Buscador{

    private $httpClient;
    private $crawler;

    public function __construct($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;
        }

    }
}
2 respostas
solução!

Oii, Thauan!

O erro que você está recebendo, "Expected type 'array'. Found 'void.'", está indicando que a função buscar() deveria retornar um array, mas não está retornando nada (void).

Isso acontece porque você esqueceu de retornar a variável $cursos no final da sua função. Se você olhar o código fornecido na aula, verá que após o loop foreach, há uma linha que retorna a variável $cursos:

public function buscar(string $url): array
{
    // ... 

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

    return $cursos;
}

Espero ter ajudado e bons estudos!

Realmente, obrigado!

Agora foi.