如何制作一个与框架无关的编写器包,该包使用session


How to make a framework-agnostic composer package that uses session?

我正在将我现有的CodeIgniter库反射到一个可重用且与框架无关的编写器包中。

我的代码依赖于CI的sessionuri库和视图。

我看过这个。读

我是这么想的:

  • 创建会话接口
  • 通过扩展接口
  • 创建一个使用CI会话的类

但是我还是不太清楚怎么做。

更新

我差点就搞定了。这里的实现与上面链接的演讲中讨论的相同。

在PHP中有一个名为$_SESSION的数组。您可以实现一个class,称为SessionHandler。在class中,您应该创建一个方法来启动会话,另一个方法来销毁会话。您还可以创建方法来做其他事情。一个非常基本的实现是这样的:

class SessionHandler {
    private static $isStarted = false;
    public static function startSession() {
        if (!SessionHandler::$isStarted && session_status() === 1) {
            SessionHandler::$isStarted = true;
            session_start();
        }
    }
    public function destroySession() {
        session_destroy();
    }
    public function getElement($key, $defaultValue = null) {
        return ((isset($_SESSION[$key])) ? ($_SESSION[$key]) : ($defaultValue));
    }
    public function setElement($key, $value) {
        $_SESSION[$key] = $value;
    }
    public function __construct() {
        SessionHandler::startSession();
    }
}