effectra / session
The Effectra Session package.
Requires
- php: ^8.2
- effectra/config: ^1.1
- psr/container: ^1.1 || ^2.0
Requires (Dev)
- barryvdh/laravel-ide-helper: ^3.7
- illuminate/support: ^13.22
- mrpunyapal/peststan: ^0.2.12
- pestphp/pest: ^3.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.2
- spatie/laravel-package-tools: ^1.93
README
The Session class represents a session and provides methods for session management.
Table of Contents
Installation
You can install the Session class via Composer by running the following command:
composer require effectra/session
Usage
To use the Session class, you need to include it in your PHP file:
require_once 'vendor/autoload.php'; use Effectra\Session\Session; // Create a new instance of the Session class $session = new Session(); // Start the session $session->start(); // Use session methods to manage session data // ... // Save and close the session $session->save();
Methods
The Session class provides the following methods:
start(): Starts the session.save(): Saves and closes the session.isActive(): Checks if the session is active.get(string $key, mixed $default = null): Retrieves the value for the given key from the session.has(string $key): bool: Checks if the given key exists in the session.regenerate(): bool: Regenerates the session ID.put(string $key, mixed $value): Sets a value in the session for the given key.forget(string $key): Removes the value for the given key from the session.flash(string $key, array $messages): Sets a flash message in the session for the given key.getFlash(string $key): array: Retrieves the flash message for the given key from the session.all(): array: Gets all of the session data.pull(string $key, mixed $default = null): mixed: Gets the value of a given key and then forgets it.clear(): void: Removes all of the items from the session.destroy(): void: Destroys the session entirely.getId(): string: Gets the current session ID.setId(string $id): void: Sets the session ID.
Dependency Injection (DI) Container Usage
The Session class provides default values for its constructor parameters, making it fully compatible with auto-wiring Dependency Injection Containers. To support various frameworks out-of-the-box, this package includes specific integrations:
Laravel
The package includes a Service Provider (Effectra\Session\Providers\SessionServiceProvider) that is automatically discovered by Laravel. You can resolve the SessionInterface or Session directly from the container:
use Effectra\Session\Contracts\SessionInterface; // In a controller or service public function __construct(SessionInterface $session) { $this->session = $session; }
Slim / PSR-11 Containers
For frameworks like Slim or generic PSR-11 containers, you can use the included SessionFactory:
use Effectra\Session\Contracts\SessionInterface; use Effectra\Session\Factory\SessionFactory; // In your definitions.php or dependencies setup return [ SessionInterface::class => DI\factory(SessionFactory::class), ];
If your container supports auto-wiring (like PHP-DI), it can also instantiate Effectra\Session\Session directly thanks to the default constructor values.
Example
Here's an example of how to use the Session class:
// Create a new instance of the Session class $session = new Session(); // Start the session $session->start(); // Set a value in the session $session->put('username', 'john_doe'); // Get a value from the session $username = $session->get('username'); // Check if a key exists in the session if ($session->has('username')) { // Do something } // Pull a value (get and remove) $pulledValue = $session->pull('username'); // Regenerate the session ID $session->regenerate(); // Set a flash message in the session $session->flash('success', ['Logged in successfully!']); // Retrieve and display the flash message $successMessage = $session->getFlash('success'); echo $successMessage[0]; // Save and close the session $session->save();