Flight encapsula a requisição HTTP em um único objeto, que pode ser acessado fazendo:
$request = Flight::request();
Quando você está trabalhando com uma requisição em uma aplicação web, tipicamente você vai querer extrair um cabeçalho, ou um parâmetro $_GET ou $_POST, ou talvez até mesmo o corpo bruto da requisição. Flight fornece uma interface simples para fazer todas essas coisas.
$_GET
$_POST
Aqui está um exemplo obtendo um parâmetro de string de consulta:
Flight::route('/search', function(){ $keyword = Flight::request()->query['keyword']; echo "Você está pesquisando por: $keyword"; // consultar um banco de dados ou algo assim com o $keyword });
Aqui está um exemplo de talvez um formulário com um método POST:
Flight::route('POST /submit', function(){ $name = Flight::request()->data['name']; $email = Flight::request()->data['email']; echo "Você enviou: $name, $email"; // salvar em um banco de dados ou algo assim com o $name e $email });
O objeto de requisição fornece as seguintes propriedades:
$_SERVER
HTTP_CLIENT_IP
HTTP_X_FORWARDED_FOR
HTTP_X_FORWARDED
HTTP_X_CLUSTER_CLIENT_IP
HTTP_FORWARDED_FOR
HTTP_FORWARDED
Você pode acessar as propriedades query, data, cookies e files como arrays ou objetos.
query
data
cookies
files
Então, para obter um parâmetro de string de consulta, você pode fazer:
$id = Flight::request()->query['id'];
Ou você pode fazer:
$id = Flight::request()->query->id;
Para obter o corpo bruto da requisição HTTP, por exemplo, ao lidar com requisições PUT, você pode fazer:
$body = Flight::request()->getBody();
Se você enviar uma requisição com o tipo application/json e os dados {"id": 123} eles estarão disponíveis na propriedade data:
application/json
{"id": 123}
$id = Flight::request()->data->id;
Você pode acessar o array $_GET através da propriedade query:
Você pode acessar o array $_POST através da propriedade data:
$id = Flight::request()->data['id'];
Você pode acessar o array $_COOKIE através da propriedade cookies:
$_COOKIE
$myCookieValue = Flight::request()->cookies['myCookieName'];
Há um atalho disponível para acessar o array $_SERVER através do método getVar():
getVar()
$host = Flight::request()->getVar['HTTP_HOST'];
Você pode acessar arquivos enviados através da propriedade files:
$uploadedFile = Flight::request()->files['myFile'];
Você pode processar o envio de arquivos usando o framework com alguns métodos auxiliares. Basicamente resume-se a puxar os dados do arquivo da requisição e movê-los para um novo local.
Flight::route('POST /upload', function(){ // Se você tiver um campo de entrada como <input type="file" name="myFile"> $uploadedFileData = Flight::request()->getUploadedFiles(); $uploadedFile = $uploadedFileData['myFile']; $uploadedFile->moveTo('/caminho/para/uploads/' . $uploadedFile->getClientFilename()); });
Se você tiver vários arquivos enviados, você pode percorrê-los:
Flight::route('POST /upload', function(){ // Se você tiver um campo de entrada como <input type="file" name="myFiles[]"> $uploadedFiles = Flight::request()->getUploadedFiles()['myFiles']; foreach ($uploadedFiles as $uploadedFile) { $uploadedFile->moveTo('/caminho/para/uploads/' . $uploadedFile->getClientFilename()); } });
Nota de Segurança: Sempre valide e sanitize a entrada do usuário, especialmente ao lidar com envios de arquivos. Sempre valide o tipo de extensões que você permitirá que sejam enviadas, mas você também deve validar os "bytes mágicos" do arquivo para garantir que ele é realmente do tipo de arquivo que o usuário afirma que é. Existem artigos e bibliotecas disponíveis para ajudar com isso.
Você pode acessar os cabeçalhos da requisição usando o método getHeader() ou getHeaders():
getHeader()
getHeaders()
// Talvez você precise do cabeçalho Authorization $host = Flight::request()->getHeader('Authorization'); // ou $host = Flight::request()->header('Authorization'); // Se você precisar obter todos os cabeçalhos $headers = Flight::request()->getHeaders(); // ou $headers = Flight::request()->headers();
Você pode acessar o corpo bruto da requisição usando o método getBody():
getBody()
Você pode acessar o método da requisição usando a propriedade method ou o método getMethod():
method
getMethod()
$method = Flight::request()->method; // na verdade chama getMethod() $method = Flight::request()->getMethod();
Nota: O método getMethod() primeiro puxa o método de $_SERVER['REQUEST_METHOD'], depois pode ser substituído por $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] se existir ou $_REQUEST['_method'] se existir.
$_SERVER['REQUEST_METHOD']
$_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']
$_REQUEST['_method']
Há alguns métodos auxiliares para juntar partes de uma URL para sua conveniência.
Você pode acessar a URL completa da requisição usando o método getFullUrl():
getFullUrl()
$url = Flight::request()->getFullUrl(); // https://example.com/some/path?foo=bar
Você pode acessar a URL base usando o método getBaseUrl():
getBaseUrl()
$url = Flight::request()->getBaseUrl(); // Aviso, sem barra final. // https://example.com
Você pode passar uma URL para o método parseQuery() para analisar a string de consulta em um array associativo:
parseQuery()
$query = Flight::request()->parseQuery('https://example.com/some/path?foo=bar'); // ['foo' => 'bar']