Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter-从模型访问控制器数据_Php_Codeigniter - Fatal编程技术网

Php 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

我正在从事一个Codeigniter项目,我看到了从模型访问控制器。我想知道$this->controller是否与使用$CI=&get\u instance()相同或不同。我假设不是,但我更熟悉从函数返回数据的标准方式。我还没有看到Codeigniter示例这样做,所以我不认为这是访问控制器的建议方法,但更像是一种黑客行为:

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();请在此处找到详细答案: