Php 在控制器和模型之间移动数据-Codeigniter最佳实践

Php 在控制器和模型之间移动数据-Codeigniter最佳实践,php,codeigniter,oop,ion-auth,Php,Codeigniter,Oop,Ion Auth,对于这个简单的问题很抱歉,但假设我使用Ion Auth和Codeigniter来区分登录用户和未登录用户 我有一个简单的自定义控制器,可以捕获用户的ID: class MY_Controller extends CI_Controller { function __construct() { parent::__construct(); global $data; if($this->ion_auth->logged_

对于这个简单的问题很抱歉,但假设我使用Ion Auth和Codeigniter来区分登录用户和未登录用户

我有一个简单的自定义控制器,可以捕获用户的ID:

class MY_Controller extends CI_Controller {
     function __construct() {
        parent::__construct();
        global $data;
            if($this->ion_auth->logged_in()){
            $data['logged'] = True;
            $data['uid'] = $this->ion_auth->get_user_id();
            $data['username'] = $this->ion_auth->get_username();
        }

        //User is Not Logged in
        else{
            $data['logged'] = False;
        }
    }
}
然后,对于我的任何一个常规控制器,我想为登录用户和未登录用户创建一个页面

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends MY_Controller {
        {
        global $data;
            if($data['logged']) {
                $this->load->view('logged_in', $data);
                }
            else{
                $this->load->view('not_logged_in', $data);
            }   
        }
}
我的问题是如何将uid传递给我的模型?某些模型由默认CI控制器调用,该控制器不调用
$this->ion\u auth->get\u user\u id()函数。我应该进入那些默认控制器并将uid传递给模型,还是应该调用函数
$this->ion\u auth->get\u user\u id()直接在模型中


我为任何混乱道歉,我只是有一堆需要或不需要用户id的控制器和模型,我正在努力避免对每一个都进行硬编码

您不需要在模型中加载库,模型总是从控制器中调用的,因此您只需在控制器中加载库,从他调用的模型中就可以使用函数

那么代码呢

$this->ion_auth->get_user_id()
将在控制器加载的所有模型中工作

您可以执行以下任一操作

我尽力将用户id发送到数组中的模型(正如您所做的那样)。它使模型更清晰,更容易阅读

例如:

但如果需要,可以通过CI实例访问它

从以下内容开始创建模型:

function __construct()
{
    parent::__construct();

    $ci =& get_instance();

}
然后我可以按如下方式访问用户id:

 $user_id = $CI->ion_auth->get_user_id();

抱歉,为什么要在模型中再次调用get_user_id?为什么不在我的控制器中调用它,然后将它从控制器传递给模型类呢?这完全是您自己的偏好。在研究您的问题时,我发现在我最近的CI应用程序中,我没有在模型中调用get_user_id的实例。我所有的模型都是直接从控制器接收到的,我知道这一点,但我的目标是避免调用同一个函数两次。相反,我希望将控制器中从get_user_id函数获得的变量传递给模型。两次调用get_user_id似乎效率低下,而不是在控制器中调用它然后将其传递给模型。
 $user_id = $CI->ion_auth->get_user_id();