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

'Cannot use positional argument after named argument'

Estou com duvido do porque o PHP acusa um erro, verifiquei e meu codigo está igual ao do arquivo Buscador.php do curso, no dele não acusa esse erro, não sei se deixei passar algo na sintaxe ou se é porque estou o usando o vscode ao inves do php storm.

<?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(method:'GET', $url); 

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

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

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

        return $cursos;
    }

}

?>
1 resposta
solução!

Oi Pedro,

O erro "Cannot use positional argument after named argument" ocorre porque você está misturando argumentos nomeados (como method: 'GET') com argumentos posicionais na chamada do método request.

Em PHP, após usar um argumento nomeado, todos os argumentos subsequentes também devem ser nomeados.

A forma correta de chamar o método request seria:

$resposta = $this->httpCliente->request(method: 'GET', url: $url);

Ou, se você preferir usar argumentos posicionais, você pode fazer assim:

$resposta = $this->httpCliente->request('GET', $url);

A escolha entre usar argumentos nomeados ou posicionais é uma questão de preferência pessoal e estilo de código, mas é importante manter a consistência dentro de uma mesma chamada de função. 👍

Além disso, notei um pequeno erro de digitação na linha do foreach: $elemmento está escrito com um "m" a mais. O correto seria $elemento. 😏

Para saber mais: Argumentos nomeados no PHP.

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