pixxel / session
处理会话的PHP库。
Requires
- php: ^8.0
Requires (Dev)
- phpmd/phpmd: ^2.12
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.7
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.xml和phpcs.xml
- 显示更新会话生命周期的示例
- 是否有启用/禁用异常的功能?
- 是否有在会话属性中添加前缀的功能?
变更日志
每个版本的详细更改记录在发布说明中。
贡献
在提出拉取请求、开始讨论或报告问题之前,请务必阅读贡献指南。
感谢所有贡献者!💖
赞助商
如果这个项目帮助您减少了开发时间,您可以赞助Josantonius以支持我的开源工作😊
许可证
此存储库受MIT许可许可。
版权所有 © 2017-至今,Josantonius