Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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 MVC-我可以在类控制器中调用多个(或多个)控制器吗?_Php_Model View Controller_Controller - Fatal编程技术网

Php MVC-我可以在类控制器中调用多个(或多个)控制器吗?

Php MVC-我可以在类控制器中调用多个(或多个)控制器吗?,php,model-view-controller,controller,Php,Model View Controller,Controller,对于用php编写的项目,我可以在类控制器中调用多个(或多个)控制器吗?举例 询问:我需要从另一个控制器调用操作。。。如果我真的喜欢上面这张照片,我就要出局了 谢谢, Vinicius。然后您需要修改框架,找到控制器所在的位置,并在那个里添加第二个控制器 您使用的是什么框架?您可以按照自己的意愿进行操作。如果你不想,你不必使用MVC。然而,在MVC中,一次应该只有一个控制器处于活动状态。您可能需要多个视图或模型,而不是另一个控制器。加载(比如)站点菜单和页脚的页眉和页脚视图完全没有问题。out?任

对于用php编写的项目,我可以在类控制器中调用多个(或多个)控制器吗?举例

询问:我需要从另一个控制器调用操作。。。如果我真的喜欢上面这张照片,我就要出局了

谢谢,
Vinicius。

然后您需要修改框架,找到控制器所在的位置,并在那个里添加第二个控制器


您使用的是什么框架?

您可以按照自己的意愿进行操作。如果你不想,你不必使用MVC。然而,在MVC中,一次应该只有一个控制器处于活动状态。您可能需要多个视图或模型,而不是另一个控制器。加载(比如)站点菜单和页脚的页眉和页脚视图完全没有问题。

out?任何人。。。回到现实

是的,一个控制器可以调用另一个控制器的操作。例如,在cakePHP中,通过


如果您正在使用自己的框架,那么如何实现它的细节将非常特定于您的框架。

我相信,无论您使用哪个框架,您都可以随心所欲。如果出于任何原因无法以本机方式完成,那么可以根据需要扩展框架

话虽如此,我个人不喜欢一个控制器调用另一个控制器的想法。如果仅仅从理论的角度来看,它似乎在某种程度上打破了MVC范式。我可以做的是构建一个包含所需功能的库类,然后让两个控制器将该类实例化为成员并调用所需的函数

例如,使用CodeIgniter:

库/MyLib.php:

class MyLib
{
    public function MyFunc()
    { /* do whatever */ }
}
controllers/ControllerA.php:

class ControllerA extends Controller
{
    public function index()
    { 
        $this->load->library('MyLib');
        $this->mylib->MyFunc();
    }
}
控制器/控制器B:

class ControllerB extends Controller
{
    public function index()
    {
        $this->load->library('MyLib');
        $this->mylib->MyFunc();
    }
}

如果您正在构建另一个控制器,那么您会觉得需要访问前一个控制器的功能才能访问其功能(因为它与特定/所需的模型一起工作),那么您为后者开发的模型可能需要重构。简单地说,您的目标模型可能做得太多了。别吵了


您试图通过调用已经开发的控制器的方法来避免重复自己(DRY),但这样做会在两个控制器之间创建紧密耦合!如果借用的控制器中发生更改,将对借用控制器产生影响。不太好,琼斯博士。

我没有使用任何框架。我用MVC方法创建了我自己的项目。谢谢你的回复。我很可能会将函数requestAction复制到CakePHP中,用于我公司的内部网项目。。。我会考虑的。谢谢,伙计,没问题。很乐意帮忙。如果你是出于教育目的,那么创建自己的框架是一个很好的学习方式。然而,如果是针对生产环境,有很多人会建议只使用许多优秀的预构建框架(cakePHP、Zend、symfony)中的一个,因为它们是社区构建、支持、测试、维护和功能丰富的。是的,在我自己的intranet项目中,它要求控制许多模型和许多视图。但我刚才观察到他需要另一个控制器来处理你想要的信息。。。谢谢
class ControllerB extends Controller
{
    public function index()
    {
        $this->load->library('MyLib');
        $this->mylib->MyFunc();
    }
}