ghostff/session

PHP 会话管理器(非阻塞、闪存、分段、会话加密)。

v3.0.0 2024-07-24 14:24 UTC

This package is auto-updated.

Last update: 2024-08-24 14:37:42 UTC


README

PHP 会话管理器(非阻塞、闪存、分段、会话加密)。使用 PHP open_ssl 对会话数据进行可选的加密/解密。

驱动程序支持范围

file    cookie    mysql    sqlite    memcached    redis    license    Minimum PHP Version

安装

您可以直接下载最新的 发布版本 作为独立版本,或者您可以使用 Composer

composer require ghostff/session

基本用法

# Start session with default configurations.
$session = new Session(); 

$session->set('email', 'foo@bar.com');

echo $session->get('email');

配置选项

# use custom configuration file.
Session::setConfigurationFile('path/to/my/config.php');
 
# overriding specific configuration settings
Session::updateConfiguration([
    Session::CONFIG_DRIVER        => Redis::class,
    Session::CONFIG_START_OPTIONS => [
        Session::CONFIG_START_OPTIONS_SAVE_PATH => __DIR__ . '/tmp'
    ]
]);

# override a configuration for current session instance
$session = new Session([Session::CONFIG_ENCRYPT_DATA => true]);

初始化会话

# Start session with an auto generated id.
$session = new Session(); 

# Start session with custom ID
$session = new Session(null, bin2hex(random_bytes(32)));

使用分段 :Session

 $segment = $session->segment('my_segment');

检索会话 ID :string

echo $session->id();

提交更改 :void

# Opens, writes and closes session.
$session->commit();

设置会话数据 :Session

$session->set('fname', 'foo');
# Setting Segment
$segment->set('name', 'bar');

# Setting Flash
$session->setFlash('name', 'foobar');
# Setting Segment Flash
$segment->setFlash('name', 'barfoo');

$session->commit();

检索会话数据 :mixed

echo $session->get('name'); # outputs foo
echo $session->getOrDefault('unset_value', 'not found'); # outputs not found
# Retrieving Segment
echo $segment->get('name'); # outputs bar
echo $segment->getOrDefault('unset_value', 'not found'); # outputs not found

# Retrieving Flash
echo $session->getFlash('name'); # outputs foobar
echo $session->getFlashOrDefault('name', 'not found'); # outputs not found
# Retrieving Segment Flash
echo $segment->getFlash('name'); # outputs barfoo
echo $segment->getFlashOrDefault('name', 'not found'); # outputs not found

删除会话数据 :Session

$session->del('name');
# Removing Segment
$segment->del('name');

# Removing Flash
$session->delFlash('name');
# Removing Segment Flash
$segment->delFlash('name');

检索所有会话或分段数据 :array

$session->getAll();
# Retrieve only in specified segment.
$session->getAll('my_segment_name');

检查变量是否存在于当前会话命名空间中 :bool

$session->exist('name');
# Search flashes
$session->exist('name', true);

删除当前分段中的所有数据 :Session

$session->clear();

销毁会话 :void

$session->destroy();

重新生成会话ID :void

$session->rotate();
# Delete the old associated session file or not
$session->rotate(true);

设置队列中的会话数据 :Session

$session->push('age', 10)
        ->push('age', 20)
        ->push('age', 30)
        ->push('age', 40);

检索(弹出/移除)队列中的会话数据 :mixed

echo $session->pop('age', true);  # outputs 10
echo $session->pop('age', true);  # outputs 20
echo $session->pop('age');        # outputs 40
echo $session->pop('age');        # outputs 30