0

基本上在codeigniter中,我如何在其他库中使用系统和应用程序库?所以说我有一个应用程序库,例如:

class User
{
   // some instance variables
}

现在假设我想在 User 类中使用 codeigniter 会话类,基本上可以在 User 类中使用会话。我该怎么做呢?

4

2 回答 2

2

执行此操作的典型方法是使用get_instance(),它返回 Codeigniter 的实例(实际上是当前控制器类)。

这将在您的 CI 应用程序的任何地方工作:

get_instance()->session->set_userdata('key', 'value');
$segments = get_instance()->uri->segment_array();
// etc.

通常在 Codeigniter 中,您将其分配给类变量以方便使用:

class User
{
    private $CI;

    function __construct()
    {
        $this->CI = get_instance();
    }

    // Example
    function login()
    {
        $user = $this->get_user();
        $this->CI->session_set_userdata('user_id', $user->id);
    }
}

这确实对 CI 的状态和不同的加载类产生了很多依赖,而不是通过依赖注入将它们的实例直接传递给 User 类,但这是开发 CI 库的典型流程。

于 2012-10-15T20:23:43.943 回答
0

理想情况下,您只需从模型或控制器中传入所需的会话数据即可加载库。

否则,这应该适用于任何文件:

    <?php
    ob_start();
    include('index.php');
    ob_end_clean();
    $CI =& get_instance();
    $CI->load->library('session'); //if it's not autoloaded in your CI setup
    echo $CI->session->userdata('name');      
    ?>

我在一个类似的问题上找到了这个答案

于 2012-10-15T20:02:03.307 回答