rnr1721 / le7-cookie-wrapper
le7 PHP MVC 框架或任何 PHP 项目的 $_SESSION 和 cookies 包装器
1.0.5
2023-05-20 15:29 UTC
Requires
- php: >=8.1
- psr/simple-cache: ^3.0
Requires (Dev)
- phpunit/phpunit: ^10.0
- rnr1721/le7-cache: ^1.0
- vimeo/psalm: ^5.7
README
le7 PHP MVC 框架或任何 PHP 项目的 session 和 cookies 包装器
需求
- PHP 8.1 或更高版本。
- Composer 2.0 或更高版本。
它有什么功能?
- cookies 的 CRUD
- session 变量的 CRUD
有一组用于 $_SESSION 和 $_COOKIES 驱动变量的接口和适配器
- Core\Interfaces\CookieInterface 接口 - 用于 cookie 管理
- Core\Interfacrs\SessionInterface 接口 - 用于 session 管理
安装
composer require rnr1721/le7-cookie-wrapper
测试
composer test
Cookie 适配器
- Core\Cookies\CookiesNative - 默认适配器,用于使用
- Core\Cookies\CookiesArray - 数据存储在数组中,非持久化(用于测试)
- Core\Cookies\Cache - 数据存储在 PSR 缓存中(用于测试)
您可以编写自己的 CORE\Interfaces\CookieInterface 实现。所有这些适配器都需要配置,实现 Core\Interfaces\CookieConfigInterface
- Core\Cookies\CookieConfigDefault
当然,您也可以编写自己的实现,从某些源加载配置等。
如何使用它?
use Core\Cookies\CookiesConfigDefault; use Core\Cookies\CookiesNative; // This is the default config $newConfig = [ 'domain' => '', 'httpOnly' => false, 'path' => '', 'isSecure' => false, 'time' => 0, 'sameSite' => 'Lax', ]; // Implementation of Core\Interfaces\CookieConfigInterface $config = new CookiesConfigDefault($newConfig); // Second case to add params // $config->setParams($newConfig); // Implementation of Core\Interfaces\CookieInterface $cookies = new CookiesNative($config); // Before operations with cookies you can set more concrete params // These params will override defaults // $cookies->setPath('/'); // $cookies->setHttpOnly(true); // $cookies->setSameSite('Lax'); // $cookies->setSecure(true); // $cookies->setTime(3600); $cookies->get('mycookie'); //return cookie value by key; $cookies->get('mycookie','default'); //return cookie value by key or default; $cookies->has('mycookie'); // return bool if cookie exists or not $cookies->delete('mycookie'); // delete cookie
Session 适配器
此外,您还可以管理您的 session 变量。这是 Core\Interfaces\SessionInterface 的实现
- Core\Session\SessionNative // 原生 PHP session 管理
- Core\Session\SessionArray // 存储在数组中,非持久化,用于测试
- Core\Session\SessionCache // 存储在缓存中,非持久化,用于测试
当然,您也可以编写自己的适配器,将 session 存储在 memcache 或 Redis 等。
如何使用它?
use Core\Session\SessionNative; $session = new Core\Session\SessionNative(); // start the session $session->start(); // Set param one with value test1 $session->set('one', 'test1'); // get param one or null if not exists $session->get('one'); // get param one or default value if not exists $session->get('one','default value'); // Return bool if param exists or not $session->has('one'); // Delete the param $session->delete('one'); // Return bool if session started or not $session->isStarted(); // Clear session $session->clear() // Destroy the session $session->destroy();