https://github.com/elusivecodes/fyresession
FyreSession is a free, open-source session library for PHP.
https://github.com/elusivecodes/fyresession
database memcached mysql php redis session
Last synced: 6 months ago
JSON representation
FyreSession is a free, open-source session library for PHP.
- Host: GitHub
- URL: https://github.com/elusivecodes/fyresession
- Owner: elusivecodes
- Created: 2022-03-26T10:06:02.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-08-04T06:36:33.000Z (over 1 year ago)
- Last Synced: 2024-11-10T08:08:07.942Z (about 1 year ago)
- Topics: database, memcached, mysql, php, redis, session
- Language: PHP
- Homepage:
- Size: 114 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FyreSession
**FyreSession** is a free, open-source session library for *PHP*.
## Table Of Contents
- [Installation](#installation)
- [Basic Usage](#basic-usage)
- [Methods](#methods)
- [Session Handlers](#session-handlers)
- [Database](#database)
- [MySQL](#mysql)
- [Postgres](#postgres)
- [File](#file)
- [Memcached](#memcached)
- [Redis](#redis)
## Installation
**Using Composer**
```
composer require fyre/session
```
In PHP:
```php
use Fyre\Session\Session;
```
## Basic Usage
- `$container` is a [*Container*](https://github.com/elusivecodes/FyreContainer).
- `$config` is a [*Config*](https://github.com/elusivecodes/FyreConfig).
```php
$session = new Session($container, $config);
```
Default configuration options will be resolved from the "*Session*" key in the [*Config*](https://github.com/elusivecodes/FyreConfig).
- `$options` is an array containing configuration options.
- `cookie` is an array containing session cookie options.
- `name` is a string representing the cookie name, and will default to "*FyreSession*".
- `expires` is a number representing the cookie lifetime, and will default to *0*.
- `domain` is a string representing the cookie domain, and will default to "".
- `path` is a string representing the cookie path, and will default to "*/*".
- `secure` is a boolean indicating whether to set a secure cookie, and will default to *true*.
- `sameSite` is a string representing the cookie same site, and will default to "*Lax*".
- `expires` is a number representing the maximum lifetime of a session, and will default to the `session.gc_maxlifetime` PHP setting.
- `path` is a string representing the session path, and will default to "*sessions*".
- `handler`
- `className` must be set to `\Fyre\Session\Handlers\Database\PostgresSessionHandler`.
```php
$container->use(Config::class)->set('Session', $options);
```
**Autoloading**
It is recommended to bind the *Session* to the [*Container*](https://github.com/elusivecodes/FyreContainer) as a singleton.
```php
$container->singleton(Session::class);
```
Any dependencies will be injected automatically when loading from the [*Container*](https://github.com/elusivecodes/FyreContainer).
```php
$session = $container->use(Session::class);
```
## Methods
**Clear**
Clear the session data.
```php
$session->clear();
```
**Consume**
Retrieve and delete a value from the session.
- `$key` is a string representing the session key.
```php
$value = $session->consume($key);
```
**Delete**
Delete a value from the session.
- `$key` is a string representing the session key.
```php
$session->delete($key);
```
**Destroy**
Destroy the session.
```php
$session->destroy();
```
**Get**
Retrieve a value from the session.
- `$key` is a string representing the session key.
```php
$value = $session->get($key);
```
**Has**
Determine whether a value exists in the session.
- `$key` is a string representing the session key.
```php
$has = $session->has($key);
```
**ID**
Get the session ID.
```php
$id = $session->id();
```
**Is Active**
Determine whether the session is active.
```php
$isActive = $session->isActive();
```
**Refresh**
Refresh the session ID.
- `$deleteOldSession` is a boolean indicating whether to delete the old session, and will default to *false*.
```php
$session->refresh($deleteOldSession);
```
**Set**
Set a session value.
- `$key` is a string representing the session key.
- `$value` is the value to set.
```php
$session->set($key, $value);
```
**Set Flash**
Set a session flash value.
- `$key` is a string representing the session key.
- `$value` is the value to set.
```php
$session->setFlash($key, $value);
```
**Set Temp**
Set a session temporary value.
- `$key` is a string representing the session key.
- `$value` is the value to set.
- `$expire` is a number indicating the number of seconds the value will be valid, and will default to *300*.
```php
$session->setTemp($key, $value, $expire);
```
**Start**
Start the session.
- `$options` is an array containing configuration options.
```php
$session->start($options);
```
## Session Handlers
You can load a specific session handler by specifying the `Session.handler.className` [*Config*](https://github.com/elusivecodes/FyreConfig) option.
Custom session handlers can be created by extending `\Fyre\Session\SessionHandler` and implementing the [`SessionHandlerInterface`](https://www.php.net/manual/en/class.sessionhandlerinterface.php).
### Database
The Database session handler can be loaded using custom configuration.
- `$options` is an array containing configuration options.
- `className` must be set to `\Fyre\Session\Handlers\DatabaseSessionHandler`.
- `expires` is a number representing the maximum lifetime of a session, and will default to the `session.gc_maxlifetime` PHP setting.
- `prefix` is a string representing the session key prefix, and will default to "".
- `connectionKey` is a string representing the *Connection* key and will default to "*default*".
- `path` is a string representing the table name, and will default to "*sessions*".
```php
$container->use(Config::class)->set('Session.handler', $options);
```
#### MySQL
The MySQL database session handler can be loaded using custom configuration.
- `$options` is an array containing configuration options.
- `className` must be set to `\Fyre\Session\Handlers\Database\MysqlSessionHandler`.
- `expires` is a number representing the maximum lifetime of a session, and will default to the `session.gc_maxlifetime` PHP setting.
- `prefix` is a string representing the session key prefix, and will default to "".
- `connectionKey` is a string representing the *Connection* key and will default to "*default*".
- `path` is a string representing the table name, and will default to "*sessions*".
```php
$container->use(Config::class)->set('Session.handler', $options);
```
#### Postgres
The Postgres database session handler can be loaded using custom configuration.
- `$options` is an array containing configuration options.
- `className` must be set to `\Fyre\Session\Handlers\Database\PostgresSessionHandler`.
- `expires` is a number representing the maximum lifetime of a session, and will default to the `session.gc_maxlifetime` PHP setting.
- `prefix` is a string representing the session key prefix, and will default to "".
- `connectionKey` is a string representing the *Connection* key and will default to "*default*".
- `path` is a string representing the table name, and will default to "*sessions*".
```php
$container->use(Config::class)->set('Session.handler', $options);
```
### File
The File session handler can be loaded using custom configuration.
- `$options` is an array containing configuration options.
- `className` must be set to `\Fyre\Session\Handlers\FileSessionHandler`.
- `expires` is a number representing the maximum lifetime of a session, and will default to the `session.gc_maxlifetime` PHP setting.
- `prefix` is a string representing the session key prefix, and will default to "".
- `path` is a string representing the directory path, and will default to "*sessions*".
```php
$container->use(Config::class)->set('Session.handler', $options);
```
### Memcached
The Memcached session handler can be loaded using custom configuration.
- `$options` is an array containing configuration options.
- `className` must be set to `\Fyre\Session\Handlers\MemcachedSessionHandler`.
- `expires` is a number representing the maximum lifetime of a session, and will default to the `session.gc_maxlifetime` PHP setting.
- `prefix` is a string representing the session key prefix, and will default to "*session:*".
- `host` is a string representing the Memcached host, and will default to "*127.0.0.1*".
- `port` is a number indicating the Memcached port, and will default to *11211*.
- `weight` is a string representing the server weight, and will default to *1*.
```php
$container->use(Config::class)->set('Session.handler', $options);
```
### Redis
The Redis session handler can be loaded using custom configuration.
- `$options` is an array containing configuration options.
- `className` must be set to `\Fyre\Session\Handlers\RedisSessionHandler`.
- `expires` is a number representing the maximum lifetime of a session, and will default to the `session.gc_maxlifetime` PHP setting.
- `prefix` is a string representing the session key prefix, and will default to "*session:*".
- `host` is a string representing the Redis host, and will default to "*127.0.0.1*".
- `password` is a string representing the Redis password
- `port` is a number indicating the Redis port, and will default to *6379*.
- `database` is a string representing the Redis database.
- `timeout` is a number indicating the connection timeout.
- `persist` is a boolean indicating whether to use a persistent connection, and will default to *true*.
- `tls` is a boolean indicating whether to use a tls connection, and will default to *true*.
- `ssl` is an array containing SSL options.
- `key` is a string representing the path to the key file.
- `cert` is a string representing the path to the certificate file.
- `ca` is a string representing the path to the certificate authority file.
```php
$container->use(Config::class)->set('Session.handler', $options);
```