1
resposta

Como a var "$request" pega os parâmetros da requisição

Bom dia, boa tarde ou boa noite. Estou com dúvida onde é implementado a classe que permite a variável $request pegar os dados da requisição com $queryString = $request->getQueryParams(); dentro do método handle. Eu vejo que essa var $request vem desse código:


$psr17Factory = new Psr17Factory();

$creator = new ServerRequestCreator(
    $psr17Factory, // ServerRequestFactory
    $psr17Factory, // UriFactory
    $psr17Factory, // UploadedFileFactory
    $psr17Factory  // StreamFactory
);

$serverRequest = $creator->fromGlobals();

... sendo assim, $serverRequest teria que ser um instância de alguma implementação de ServerRequestInterface, mas não estou localizando nem a implementação e nem entendendo como esse método ->fromGlobals(); cria essa instância, já que verifiquei que ele devolve uma string enooorme (fazendo um teste com o var_dump).

Se ficou confuso, posso explicar melhor minha dúvida.

1 resposta

Olá, Giuli! Tudo bem?

Gostaria de pedir desculpas pela demora emr esponder o seu tópico.

A variável $request é criada utilizando a classe ServerRequestCreator. Essa classe é responsável por criar uma instância de uma implementação da interface ServerRequestInterface, que representa a requisição HTTP recebida pelo servidor.

O método fromGlobals() da classe ServerRequestCreator é utilizado para criar essa instância a partir das variáveis globais do PHP, como $_SERVER, $_GET, $_POST, etc. Ele pega essas variáveis globais e as utiliza para preencher os dados da requisição, como os parâmetros da URL, os dados do formulário, entre outros.

Ao chamar $creator->fromGlobals(), você está criando uma instância de ServerRequestInterface que contém todas as informações da requisição atual. Em seguida, na classe controller você utiliza $request->getQueryParams() para obter os parâmetros da URL, que são retornados como um array.

Por exemplo, se a URL da requisição for http://exemplo.com/?nome=Giuli&idade=25, ao chamar $request->getQueryParams(), você irá obter um array com os valores ['nome' => 'Giuli', 'idade' => '25'].

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓