elle-the-dev/oatmeal

以现代、面向对象的方式管理PHP cookie。

v1.0.0 2019-12-05 02:59 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');