Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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_Inheritance - Fatal编程技术网

Php Codeigniter调用模型内的父控制器函数

Php Codeigniter调用模型内的父控制器函数,php,codeigniter,inheritance,Php,Codeigniter,Inheritance,我知道这是MVC结构不兼容的,但我需要使用这种技术: 我有一个控制器和一个模型 我正在从控制器调用模型中的函数 被称为函数的模型调用另一个函数。(这就是产生错误的原因) 示例如下: 控制器: public function B($ret=false) { if(!$ret)$this->Model_model->M($ret); else echo 'ok'; } public function B($ret=false) { $this->M

我知道这是MVC结构不兼容的,但我需要使用这种技术:

我有一个控制器和一个模型

我正在从控制器调用模型中的函数

被称为函数的模型调用另一个函数。(这就是产生错误的原因)

示例如下:

控制器:

public function B($ret=false) {
    if(!$ret)$this->Model_model->M($ret);
    else echo 'ok';
    }
public function B($ret=false) {
    $this->Model_model->B($ret);
    }
型号:

public function M($ret=false) {
    $this->N($ret);
    }

private function N($ret=false) {
    $this->Controller->B(!$ret); //i can't find how can i call this
    }
public function B($ret){
    if(!$ret)$this->M($ret);
    else echo 'ok';
    }

private function M($ret=false) {
    $this->N($ret);
    }

private function N($ret=false) {
    $this-B(!$ret);
    }
我的第一个触发功能是:

$this->Controller->B(false);
$this->B(false);

我已经将控制器函数B中的代码完全移动到模型中,现在所有的东西都在模型中运行。B函数调用模型中的另一个B函数,最后一步模型不需要调用控制器;它正在调用模型中的B函数:

控制器:

public function B($ret=false) {
    if(!$ret)$this->Model_model->M($ret);
    else echo 'ok';
    }
public function B($ret=false) {
    $this->Model_model->B($ret);
    }
型号:

public function M($ret=false) {
    $this->N($ret);
    }

private function N($ret=false) {
    $this->Controller->B(!$ret); //i can't find how can i call this
    }
public function B($ret){
    if(!$ret)$this->M($ret);
    else echo 'ok';
    }

private function M($ret=false) {
    $this->N($ret);
    }

private function N($ret=false) {
    $this-B(!$ret);
    }
我的第一个触发功能是:

$this->Controller->B(false);
$this->B(false);

我的控制器仍然是短代码。

我简化了实际功能。它们非常长,我不想在控制器中保留长函数,而是想在模型中保留它们。如果找不到解决方案,我知道我需要在控制器中移动B函数。你最好使控制器函数比使用坏的实践长一点。我知道这个@YellowBird。我几乎改变了我的结构;您可以看到上面的代码。有什么解决方法吗?在模型中从ctrl调用函数是错误的!如果您需要为所有模型创建“抽象”类,并且有一个包含每个模型都可以访问的函数的文件(如果您愿意)。