rnr1721/le7-cookie-wrapper

le7 PHP MVC 框架或任何 PHP 项目的 $_SESSION 和 cookies 包装器

1.0.5 2023-05-20 15:29 UTC

This package is auto-updated.

Last update: 2024-09-20 18:28:52 UTC


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();