Php 如何制作使用会话的框架无关编写器包?

Php 如何制作使用会话的框架无关编写器包?,php,frameworks,composer-php,decoupling,Php,Frameworks,Composer Php,Decoupling,我正在将我现有的CodeIgniter库反射到一个可重用和框架无关的composer包中 我的代码取决于CI的会话和uri库和视图 我看着。 阅读 以下是我的想法: 创建会话接口 通过扩展接口创建使用CI会话的类 但我还是不知道怎么做 更新 我差一点就搞定了。正如上面链接的谈话中所讨论的,实现了相同的功能。在PHP中,有一个名为$\u SESSION的数组。您可以实现一个名为SessionHandler的类。在该类中,您应该创建一个方法来启动会话,另一个方法来销毁会话。您还可以创建方法来做其

我正在将我现有的CodeIgniter库反射到一个可重用和框架无关的composer包中

我的代码取决于CI的会话uri库和视图

我看着。 阅读

以下是我的想法:

  • 创建会话接口
  • 通过扩展接口创建使用CI会话的类
但我还是不知道怎么做

更新
我差一点就搞定了。正如上面链接的谈话中所讨论的,实现了相同的功能。

在PHP中,有一个名为
$\u SESSION
的数组。您可以实现一个名为
SessionHandler
类。在该类中,您应该创建一个方法来启动会话,另一个方法来销毁会话。您还可以创建方法来做其他事情。一个非常基本的实现如下所示:

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

}

我同意Lajos Arpad的观点。您还可以在Aura.Auth和中查看示例。它不会首先启动会话,但只有在您调用start时才会启动会话。