pixxel/session

处理会话的PHP库。

资助包维护!
Josantonius

v2.0.3 2022-07-11 09:57 UTC

This package is auto-updated.

Last update: 2024-09-11 15:24:57 UTC


README

是从josantonius的伟大库中分叉出来的,可以在这里查看: https://github.com/josantonius/php-session

为了在我们的库和他的库之间使用自己的命名空间而分叉。

处理会话的PHP库。

版本1.x被认为是过时的,不再受支持。在这个版本(2.x)中,库被完全重构。建议在使用它之前,审查该版本的文档并做出必要的更改,因为它与版本1.x不兼容。

要求

此库与以下PHP版本兼容:8.0 | 8.1。

安装

安装此扩展的首选方式是通过 Composer

要安装 PHP Session库,请简单执行以下命令

composer require pixxel/session

前面的命令将仅安装必要的文件,如果您希望 下载整个源代码,可以使用

composer require pixxel/session --prefer-source

您也可以使用Git 克隆完整的存储库

git clone https://github.com/pixxelfactory/session.git

可用方法

此库中的可用方法

启动会话

$session->start(array $options = []);

查看 https://php.ac.cn/session.configuration 获取可用的 $options 列表及其默认值

抛出 SessionException 如果头信息已发送

抛出 SessionException 如果会话已启动

抛出 SessionException 如果设置选项失败

返回 bool

检查会话是否已启动

$session->isStarted();

返回 bool

通过名称设置属性

$session->set(string $name, mixed $value = null);

抛出 SessionException 如果会话未启动

返回 void

通过名称获取属性

如果属性不存在,可选地定义一个默认值。

$session->get(string $name, mixed $default = null);

返回 mixed

获取所有属性

$session->all();

返回 array $_SESSION内容

检查属性是否存在于会话中

$session->has(string $name);

返回 bool

一次设置多个属性

如果属性存在,则替换它们,如果不存在,则创建它们。

$session->replace(array $data);

抛出 SessionException 如果会话未启动

返回 void

通过名称删除属性并返回其值

如果属性不存在,可选地定义一个默认值。

$session->pull(string $name, mixed $default = null);

抛出 SessionException 如果会话未启动

返回 mixed 属性值

通过名称删除属性

$session->remove(string $name);

抛出 SessionException 如果会话未启动

返回 void

释放所有会话变量

$session->clear();

抛出 SessionException 如果会话未启动

返回 void

获取会话ID

$session->getId();

返回 string 会话ID

设置会话ID

$session->setId(string $sessionId);

抛出 SessionException 如果会话已启动

返回 void

使用新生成的ID更新当前会话ID

$session->regenerateId(bool $deleteOldSession = false);

抛出 SessionException 如果会话未启动

返回 bool

获取会话名称

$session->getName();

返回 string 会话名称

设置会话名称

$session->setName(string $name);

抛出 SessionException 如果会话已启动

返回 void

销毁会话

$session->destroy();

抛出 SessionException 如果会话未启动

返回 bool

快速入门

要使用此库与 Composer

use Pixxel\Session;

$session = new Session();

或者,您可以使用外观来静态访问方法

use Pixxel\Facades\Session;

用法

此库的使用示例

- 启动会话

不设置选项

$session->start();

设置选项

$session->start([
    // 'cache_expire' => 180,
    // 'cache_limiter' => 'nocache',
    // 'cookie_domain' => '',
    'cookie_httponly' => true,
    'cookie_lifetime' => 8000,
    // 'cookie_path' => '/',
    'cookie_samesite' => 'Strict',
    'cookie_secure'   => true,
    // 'gc_divisor' => 100,
    // 'gc_maxlifetime' => 1440,
    // 'gc_probability' => true,
    // 'lazy_write' => true,
    // 'name' => 'PHPSESSID',
    // 'read_and_close' => false,
    // 'referer_check' => '',
    // 'save_handler' => 'files',
    // 'save_path' => '',
    // 'serialize_handler' => 'php',
    // 'sid_bits_per_character' => 4,
    // 'sid_length' => 32,
    // 'trans_sid_hosts' => $_SERVER['HTTP_HOST'],
    // 'trans_sid_tags' => 'a=href,area=href,frame=src,form=',
    // 'use_cookies' => true,
    // 'use_only_cookies' => true,
    // 'use_strict_mode' => false,
    // 'use_trans_sid' => false,
]);

使用外观

Session::start();

- 检查会话是否已启动

使用会话对象

$session->isStarted();

使用外观

Session::isStarted();

- 通过名称设置属性

使用会话对象

$session->set('foo', 'bar');

使用外观

Session::set('foo', 'bar');

- 通过名称获取属性

如果属性不存在,不设置默认值

$session->get('foo'); // null if attribute does not exist

如果属性不存在,设置默认值

$session->get('foo', false); // false if attribute does not exist

使用外观

Session::get('foo');

- 获取所有属性

使用会话对象

$session->all();

使用外观

Session::all();

- 检查会话中是否存在属性

使用会话对象

$session->has('foo');

使用外观

Session::has('foo');

- 一次性设置多个属性

使用会话对象

$session->replace(['foo' => 'bar', 'bar' => 'foo']);

使用外观

Session::replace(['foo' => 'bar', 'bar' => 'foo']);

- 根据名称删除属性并返回其值

如果属性不存在,不设置默认值

$session->pull('foo'); // null if attribute does not exist

如果属性不存在,设置默认值

$session->pull('foo', false); // false if attribute does not exist

使用外观

Session::pull('foo');

- 根据名称删除属性

使用会话对象

$session->remove('foo');

使用外观

Session::remove('foo');

- 释放所有会话变量

使用会话对象

$session->clear();

使用外观

Session::clear();

- 获取会话ID

使用会话对象

$session->getId();

使用外观

Session::getId();

- 设置会话ID

使用会话对象

$session->setId('foo');

使用外观

Session::setId('foo');

- 使用新生成的ID更新当前会话ID

不删除旧会话重新生成ID

$session->regenerateId();

通过删除旧会话来重新生成ID

$session->regenerateId(true);

使用外观

Session::regenerateId();

- 获取会话名称

使用会话对象

$session->getName();

使用外观

Session::getName();

- 设置会话名称

使用会话对象

$session->setName('foo');

使用外观

Session::setName('foo');

- 销毁会话

使用会话对象

$session->destroy();

使用外观

Session::destroy();

测试

要运行测试,您只需要< a href="https://getcomposer.org.cn/download/" rel="nofollow noindex noopener external ugc">composer 并执行以下操作:

git clone https://github.com/pixxelfactory/session.git
cd session
composer install

使用PHPUnit运行单元测试

composer phpunit

使用PHPCS运行代码标准测试

composer phpcs

运行PHP Mess Detector测试以检测代码风格的不一致性

composer phpmd

运行所有之前的测试

composer tests

待办事项

  • 添加新功能
  • 改进测试
  • 改进文档
  • 改进README文件中的英文翻译
  • 为禁用的代码风格规则重构代码。见phpmd.xmlphpcs.xml
  • 显示更新会话生命周期的示例
  • 是否有启用/禁用异常的功能?
  • 是否有在会话属性中添加前缀的功能?

变更日志

每个版本的详细更改记录在发布说明中。

贡献

在提出拉取请求、开始讨论或报告问题之前,请务必阅读贡献指南

感谢所有贡献者!💖

赞助商

如果这个项目帮助您减少了开发时间,您可以赞助Josantonius以支持我的开源工作😊

许可证

此存储库受MIT许可许可。

版权所有 © 2017-至今,Josantonius