Flight encapsule la requête HTTP dans un seul objet, qui peut être accédé en faisant :
$request = Flight::request();
Lorsque vous travaillez avec une requête dans une application web, vous voudrez généralement extraire un en-tête, ou un paramètre $_GET ou $_POST, ou peut-être même le corps brut de la requête. Flight fournit une interface simple pour faire toutes ces choses.
$_GET
$_POST
Voici un exemple d'obtention d'un paramètre de chaîne de requête :
Flight::route('/search', function(){ $keyword = Flight::request()->query['keyword']; echo "Vous recherchez : $keyword"; // interroger une base de données ou autre chose avec le $keyword });
Voici un exemple d'un formulaire avec une méthode POST :
Flight::route('POST /submit', function(){ $name = Flight::request()->data['name']; $email = Flight::request()->data['email']; echo "Vous avez soumis : $name, $email"; // enregistrer dans une base de données ou autre chose avec le $name et $email });
L'objet de requête fournit les propriétés suivantes :
$_SERVER
HTTP_CLIENT_IP
HTTP_X_FORWARDED_FOR
HTTP_X_FORWARDED
HTTP_X_CLUSTER_CLIENT_IP
HTTP_FORWARDED_FOR
HTTP_FORWARDED
Vous pouvez accéder aux propriétés query, data, cookies et files comme des tableaux ou des objets.
query
data
cookies
files
Donc, pour obtenir un paramètre de chaîne de requête, vous pouvez faire :
$id = Flight::request()->query['id'];
Ou vous pouvez faire :
$id = Flight::request()->query->id;
Pour obtenir le corps brut de la requête HTTP, par exemple lors du traitement des requêtes PUT, vous pouvez faire :
$body = Flight::request()->getBody();
Si vous envoyez une requête avec le type application/json et les données {"id": 123} elles seront disponibles via la propriété data :
application/json
{"id": 123}
$id = Flight::request()->data->id;
Vous pouvez accéder au tableau $_GET via la propriété query :
Vous pouvez accéder au tableau $_POST via la propriété data :
$id = Flight::request()->data['id'];
Vous pouvez accéder au tableau $_COOKIE via la propriété cookies :
$_COOKIE
$myCookieValue = Flight::request()->cookies['myCookieName'];
Il existe un raccourci disponible pour accéder au tableau $_SERVER via la méthode getVar() :
getVar()
$host = Flight::request()->getVar['HTTP_HOST'];
Vous pouvez accéder aux fichiers téléchargés via la propriété files :
$uploadedFile = Flight::request()->files['myFile'];
Vous pouvez traiter les téléchargements de fichiers en utilisant le framework avec quelques méthodes d'aide. Cela revient essentiellement à obtenir les données du fichier de la requête et à les déplacer vers un nouvel emplacement.
Flight::route('POST /upload', function(){ // Si vous aviez un champ d'entrée comme <input type="file" name="myFile"> $uploadedFileData = Flight::request()->getUploadedFiles(); $uploadedFile = $uploadedFileData['myFile']; $uploadedFile->moveTo('/path/to/uploads/' . $uploadedFile->getClientFilename()); });
Si vous avez plusieurs fichiers téléchargés, vous pouvez les parcourir :
Flight::route('POST /upload', function(){ // Si vous aviez un champ d'entrée comme <input type="file" name="myFiles[]"> $uploadedFiles = Flight::request()->getUploadedFiles()['myFiles']; foreach ($uploadedFiles as $uploadedFile) { $uploadedFile->moveTo('/path/to/uploads/' . $uploadedFile->getClientFilename()); } });
Note de sécurité : Validez toujours et assainissez les entrées de l'utilisateur, en particulier lors du traitement des téléchargements de fichiers. Validez toujours le type d'extensions que vous autoriserez à être téléchargées, mais vous devriez également valider les "octets magiques" du fichier pour vous assurer qu'il s'agit effectivement du type de fichier que l'utilisateur prétend avoir. Il existe des articles et bibliothèques disponibles pour vous aider avec cela.
Vous pouvez accéder aux en-têtes de la requête en utilisant la méthode getHeader() ou getHeaders() :
getHeader()
getHeaders()
// Peut-être avez-vous besoin de l'en-tête d'Authorization $host = Flight::request()->getHeader('Authorization'); // ou $host = Flight::request()->header('Authorization'); // Si vous devez récupérer tous les en-têtes $headers = Flight::request()->getHeaders(); // ou $headers = Flight::request()->headers();
Vous pouvez accéder au corps brut de la requête en utilisant la méthode getBody() :
getBody()
Vous pouvez accéder à la méthode de requête en utilisant la propriété method ou la méthode getMethod() :
method
getMethod()
$method = Flight::request()->method; // appelle en réalité getMethod() $method = Flight::request()->getMethod();
Remarque : La méthode getMethod() récupère d'abord la méthode à partir de $_SERVER['REQUEST_METHOD'], puis elle peut être écrasée par $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] si elle existe ou $_REQUEST['_method'] si elle existe.
$_SERVER['REQUEST_METHOD']
$_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']
$_REQUEST['_method']
Il existe quelques méthodes d'aide pour assembler des parties d'une URL pour votre commodité.
Vous pouvez accéder à l'URL de requête complète en utilisant la méthode getFullUrl() :
getFullUrl()
$url = Flight::request()->getFullUrl(); // https://example.com/some/path?foo=bar
Vous pouvez accéder à l'URL de base en utilisant la méthode getBaseUrl() :
getBaseUrl()
$url = Flight::request()->getBaseUrl(); // Remarque, pas de barre oblique de fin. // https://example.com
Vous pouvez passer une URL à la méthode parseQuery() pour analyser la chaîne de requête en un tableau associatif :
parseQuery()
$query = Flight::request()->parseQuery('https://example.com/some/path?foo=bar'); // ['foo' => 'bar']