Php Codeigniter-从模型访问控制器数据
我正在从事一个Codeigniter项目,我看到了从模型访问控制器。我想知道$this->controller是否与使用$CI=&get\u instance()相同或不同。我假设不是,但我更熟悉从函数返回数据的标准方式。我还没有看到Codeigniter示例这样做,所以我不认为这是访问控制器的建议方法,但更像是一种黑客行为:Php Codeigniter-从模型访问控制器数据,php,codeigniter,Php,Codeigniter,我正在从事一个Codeigniter项目,我看到了从模型访问控制器。我想知道$this->controller是否与使用$CI=&get\u instance()相同或不同。我假设不是,但我更熟悉从函数返回数据的标准方式。我还没有看到Codeigniter示例这样做,所以我不认为这是访问控制器的建议方法,但更像是一种黑客行为: class my_model extends CI_Model { public function __construct() { $th
class my_model extends CI_Model
{
public function __construct()
{
$this->errors = array();
parent::__construct();
$this->controller = get_instance();
}
public function somefunc()
{
// Accessing controller
$this->controller->session->set_userdata('foo', 'bar');
$this->controller->data = "fubar";
}
}
这不是真正的CI,这是一个修改。使用的可能是简单的HMVC 在正常CI使用中,模型将返回数据 在应用程序中的某个位置,$controller被设置为控制器对象和CI超级对象中的别名。通过这种方式实现了分层模块化MVC,因此可以从其他模块调用模块内的控制器方法
这是否是一个好的做法似乎是一个有争议的问题。这是一个有点黑客,但对于simple_hmvc来说,这是一个不错的选择,但我不会这么做。在我看来,您正在创建调试、单元测试甚至只是职责清晰性被严重模糊的情况,并将在以后的工作中造成麻烦。这不是CI,这是一种修改。使用的可能是简单的HMVC 在正常CI使用中,模型将返回数据 在应用程序中的某个位置,$controller被设置为控制器对象和CI超级对象中的别名。通过这种方式实现了分层模块化MVC,因此可以从其他模块调用模块内的控制器方法
这是否是一个好的做法似乎是一个有争议的问题。这是一个有点黑客,但对于simple_hmvc来说,这是一个不错的选择,但我不会这么做。在我看来,您正在创建调试、单元测试甚至只是职责清晰性被严重模糊的情况,并将在以后的工作中造成麻烦。我认为这是反模式的。控制器应该是控制逻辑的控制器。您可以通过从模型函数获取返回值来实现这一点。是,请同意@phiter。但您仍然希望访问,然后尝试$this->controller=&get_instance();在这里找到详细答案:我认为这是反模式的。控制器应该是控制逻辑的控制器。您可以通过从模型函数获取返回值来实现这一点。是,请同意@phiter。但您仍然希望访问,然后尝试$this->controller=&get_instance();请在此处找到详细答案: