Requisição HTTP

Além dos recursos nativos do PHP, existem também recursos específicos adicionais para facilitar o processamento de requisições HTTP.

Determine os tipos de solicitações

Verifica se a solicitação corresponde a um tipo específico: HTTPS, XHR, Pjax, prefetch, save-data, GPC ou um método HTTP padrão (por exemplo, GET, POST).

Uso Descrição
Request::is('gpc') Retorna true se Sec-GPC: 1 o cabeçalho foi enviado na solicitação, caso contrário, retorna false.
Request::is('pjax') Retorna true se X-Pjax o cabeçalho foi enviado na solicitação, caso contrário, retorna false.
Request::is('prefetch') Retorna true se o cabeçalho prefetch (por exemplo, Sec-Purpose, x-purpose, purpose, x-moz) foi enviado na solicitação, caso contrário retorna false.
Request::is('save') Retorna true se Save-Data: on o cabeçalho foi enviado na solicitação, caso contrário, retorna false.
Request::is('secure') Retorna verdadeiro true se estiver usando HTTPS, caso contrário retorna falso false.
Request::is('xhr') Retorna true se X-Requested-With: XMLHttpRequest o cabeçalho foi enviado na solicitação, caso contrário, retorna false.

Obtenção de cabeçalhos

Para obter o cabeçalho atual, use:

use Inphinit\Http\Request; echo Request::header('content-length'), '<br>'; echo Request::header('content-type'), '<br>'; echo Request::header('accept');

Se um cabeçalho não estiver definido por padrão, Request::header() retornará nulo; no entanto, ainda é possível alterar o valor alternativo, como no exemplo a seguir:

use Inphinit\Http\Request; echo Request::header('x-foo', 'Missing Value!');

Se X-Foo não estiver na solicitação, Missing Value! será exibido.

Obtendo a string de consulta

Este método retorna exatamente o mesmo valor que $_SERVER['QUERY_STRING'], com uma diferença: se você estiver em um servidor IIS, algumas solicitações para páginas chamadas por <error statusCode="code" responseMode="ExecuteURL" ... podem retornar um valor incorreto. Este método só retornará uma string de consulta quando for absolutamente necessário.

use Inphinit\Http\Request; echo Request::query();

Obtendo GET, POST e COOKIE

Em PHP, as requisições aceitam valores aninhados, então escrever um código como este:

echo $_GET['foo']['bar']['baz']; echo $_POST['foo']['bar']['baz']; echo $_COOKIE['foo']['bar']['baz'];

Para simplificar, você pode usar:

use Inphinit\Http\Request; echo Request::get('foo.bar.baz'); echo Request::post('foo.bar.baz'); echo Request::cookie('foo.bar.baz');

Se um valor não existir, você pode retornar um valor alternativo, por exemplo:

use Inphinit\Http\Request; echo Request::get('foo.bar.baz', 'Missing get!'); echo Request::post('foo.bar.baz', 'Missing post!'); echo Request::cookie('foo.bar.baz', 'Missing cookie!');

Obtendo o caminho da solicitação

Para obter o caminho da URL atual, sem a string de consulta, você pode usar o método.

use Inphinit\Http\Request; echo Request::path();

O valor de retorno de Request::path() é semelhante ao da constante INPHINIT_PATH, com a diferença de que INPHINIT_PATH retorna apenas o caminho relativo à aplicação. Para melhor compreensão, devido à flexibilidade do Inphinit, é possível utilizá-lo sem a necessidade de criar um VirtualHost. Portanto, se o Apache tiver um servidor com pastas, assim como um servidor configurado de forma simples:

DocumentRoot "/var/www/html" <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>

Assim, dentro da pasta /var/www/html é possível disponibilizar diferentes aplicações através de subpastas, por exemplo:

  • inphinit-app/
    • .htaccess
    • index.php
    • public/
      • .htaccess
    • system/
      • main.php
  • other-application/
    • index.php
    • sample.php
  • blog/
    • .htaccess
    • index.php
    • wp-admin/

Então, se você tiver uma rota como:

use Inphinit\Http\Request; $app->action('GET', '/foo/bar/baz', function () { var_dump(Request::path()); var_dump(INPHINIT_PATH); });

Assim, ao acessar, http://example/inphinit-app/foo/bar/baz você verá:

string(25) "/inphinit-app/foo/bar/baz" string(12) "/foo/bar/baz"
Página inicial
Apoie com uma estrela no GitHub