Aller au contenu principal
Version: Canary 🚧

Session HTTP

Introduction​

info

Les applications HTTP Ă©tant sans Ă©tat, les sessions offrent un moyen de stocker des informations sur l'utilisateur Ă  travers plusieurs requĂȘtes.

Utilisation​

RĂ©cupĂ©ration des donnĂ©es​

Il existe deux maniÚres principales de travailler avec les données de session dans Bow : le helper global session et via une instance Bow\Http\Request.

PremiĂšrement, examinons l'accĂšs Ă  la session via une instance Bow\Http\Request, qui peut ĂȘtre injectĂ©e sur une mĂ©thode de contrĂŽleur. N'oubliez pas que les dĂ©pendances des mĂ©thodes du contrĂŽleur sont automatiquement injectĂ©es via le conteneur Bow :

namespace App\Controllers;

use App\Controllers\Controller;
use App\Models\User;
use Bow\Http\Request;

class UserController extends Controller
{
/**
* Afficher un utilisateur
*
* @param Request $request
* @param int $id
* @return Response
*/
public function show(Request $request, $id)
{
$value = $request->session()->get('key');

//
}
}

Lorsque vous récupérez un élément de la session, vous pouvez également transmettre une valeur par défaut comme deuxiÚme argument de la méthode get. Cette valeur par défaut sera renvoyée si la clé spécifiée n'existe pas dans la session. Si vous transmettez une closure en tant que valeur par défaut à la méthode get et que la clé demandée n'existe pas, la closure sera exécutée et son résultat sera renvoyé:

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {
return 'default';
});

Le helper global de session​

Vous pouvez également utiliser la fonction PHP session globale pour récupérer et stocker des données dans la session. Lorsque le helper session est appelé avec un seul argument de chaßne, il renvoie la valeur de cette clé de session. Lorsque le helper est appelé avec un tableau de paires clé/valeur, ces valeurs sont stockées dans la session :

$app->get('home', function () {
// Récupérer une donnée de la session
$value = session('key');

// Spécifier une valeur par défaut
$value = session('key', 'default');

// Stocker une donnée dans la session
session(['key' => 'value']);
});

RĂ©cupĂ©ration de toutes les donnĂ©es de session​

Si vous souhaitez récupérer toutes les données de la session, vous pouvez utiliser la méthode all:

$data = $request->session()->all();

DĂ©terminer si un Ă©lĂ©ment existe dans la session​

Pour déterminer si un élément est présent dans la session, vous pouvez utiliser la méthode has. La méthode has renvoie true si l'élément est présent et n'est pas null :

if ($request->session()->has('users')) {
//
}

Pour dĂ©terminer si un Ă©lĂ©ment est prĂ©sent dans la session, mĂȘme si sa valeur est null, vous pouvez utiliser la mĂ©thode exists. La mĂ©thode exists renvoie true si l'Ă©lĂ©ment est prĂ©sent:

if ($request->session()->exists('users')) {
//
}

Stocker des donnĂ©es​

Pour stocker des données dans la session, vous utiliserez généralement la méthode put ou le helper session.

// Via une instance de requĂȘte
$request->session()->set('key', 'value');

// Via le helper session...
session(['key' => 'value']);

DonnĂ©es flash​

Information

Parfois, vous souhaiterez peut-ĂȘtre stocker des Ă©lĂ©ments dans la session uniquement pour la prochaine requĂȘte. Les donnĂ©es flash sont principalement utiles pour les messages d'Ă©tat de courte durĂ©e.

Vous pouvez le faire en utilisant la mĂ©thode flash ou le helper flash. Les donnĂ©es stockĂ©es dans la session Ă  l'aide de cette mĂ©thode ne seront disponibles que lors de la requĂȘte HTTP suivante, puis seront supprimĂ©es.

$request->session()->flash('status', 'Welcome !');

Si vous devez supprimer vos données flash, vous pouvez utiliser la méthode clearFlash :

$request->session()->clearFlash();

Suppression de donnĂ©es​

La méthode remove supprimera une donnée de la session. Si vous souhaitez supprimer toutes les données de la session, vous pouvez utiliser la méthode flush. Si par contre vous souhaitez supprimer toutes les informations sauf les informations de flash, vous pouvez utiliser la méthode clear :

// Supprimer une donnée de la session
$request->session()->remove('key');

// Supprimer toutes les informations sauf les informations de flash
$request->session()->clear();

// Supprimer toutes les données de la session
$request->session()->flush();

Il manque quelque chose ?

Si vous rencontrez des problÚmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.