elle-the-dev / oatmeal
以现代、面向对象的方式管理PHP cookie。
Requires
- php: ^7.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^6.1|7.*
This package is auto-updated.
Last update: 2024-09-17 19:47:30 UTC
README
Oatmeal是一个为现代、面向对象PHP开发设计的cookie管理器。Oatmeal既可以作为一个独立的包使用,也可以集成到Laravel中。
要求
Oatmeal需要PHP 7.0及以上版本。
安装
通过composer进行安装
composer require elle-the-dev/oatmeal
如果我们想集成到Laravel中,还需要运行
php artisan vendor:publish
这将把配置文件发布到config/oatmeal.php
。
对于Laravel,如果我们不使用自动发现,我们需要将OatmealServiceProvider
添加到config/app.php
中的providers数组
ElleTheDev\Oatmeal\Providers\OatmealServiceProvider::class,
使用方法
实例化
理想情况下,我们会将Oatmeal与依赖注入结合使用,但这是独立实例化一个新实例的样子。
$oatmeal = new ElleTheDev\Oatmeal\Oatmeal;
可以通过构造函数传入配置,因此我们不需要每次设置cookie时都指定路径、域名、https和http-only设置。
$oatmeal = new ElleTheDev\Oatmeal\Oatmeal([ 'path' => '/', 'domain' => 'example.com', 'secure' => false, 'httpOnly' => true, ]);
在Laravel中,服务提供商允许自动注入Oatmeal接口和自动从config/oatmeal.php
加载配置
use ElleTheDev\Oatmeal\Contracts\Oatmeal; class ExampleController extends Controller { public function show(Oatmeal $oatmeal) { } }
在Laravel中注入时,Oatmeal将自动使用配置文件config/oatmeal.php
。
设置
我们可以设置一个带有分钟数超时的基本cookie。使用set
也会更新$_COOKIE
超全局数组,包含新的cookie值。
$oatmeal->set('name', 'value', 60);
我们也可以存储一个没有过期时间的cookie(注意:实际上它在约5年后才会过期)
$oatmeal->forever('name', 'value');
如果我们需要在设置cookie之前更改设置,我们可以通过链式方法调用来实现。
$oatmeal->setPath('/') ->setDomain('example.com') ->setSecure(false) ->setHttpOnly(true) ->set('name', 'value', 60);
获取
获取cookie非常简单,只需调用get
。如果请求的cookie不存在或已过期,get
将返回null
$value = $oatmeal->get('name');
如果我们想在获取cookie后忘记它,我们可以使用pull
代替。使用pull
也会更新$_COOKIE
超全局数组,移除被拉取的cookie。
$value = $oatmeal->pull('name');
删除
我们可以使用forget
来删除cookie
$oatmeal->forget('name');