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"