Php 加载程序中控制器的调用方法

Php 加载程序中控制器的调用方法,php,oop,model-view-controller,Php,Oop,Model View Controller,这是我上一个问题的后续问题,我需要使用加载器调用控制器的index方法。这是我在加载器里找到的。这是可行的,但我不知道这样做是否正确。我搜索谷歌时运气不佳,因此不得不问 public function controller($controller) { $file = 'controller/' . $controller . '.php'; $class = $controller; if (file_exists($file)) { include_

这是我上一个问题的后续问题,我需要使用加载器调用控制器的index方法。这是我在加载器里找到的。这是可行的,但我不知道这样做是否正确。我搜索谷歌时运气不佳,因此不得不问

public function controller($controller)
{
    $file = 'controller/' . $controller . '.php';
    $class = $controller;

    if (file_exists($file)) {
        include_once($file);
        $controller = new $class($this->registry);
        $controller->index();
    } else {
        echo 'Controller ' . $controller . ' not found';
    }
}
在实例化$controller之后,我将这个$controller->index;调用index方法

另外,要检查函数是否可调用,我读到的是可调用函数和调用用户函数,但我不确定如何使用它们

public function controller($controller)
{
    $file = 'controller/' . $controller . '.php';
    $class = $controller;

    if (file_exists($file)) {
        include_once($file);
        $controller = new $class($this->registry);

        if (is_callable($controller)) {

        }

    } else {
        echo 'Controller ' . $controller . ' not found';
    }
}

如果您能帮忙,我将不胜感激。

好的,我得到了这个,下面是我所做的

public function controller($controller)
{
    $file = 'controller/' . $controller . '.php';
    $class = $controller;

    if (file_exists($file)) {
        include_once($file);
        $controller = new $class($this->registry);

        if (is_callable(array($controller, 'index'))) {
            return call_user_func(array($controller, 'index'));
        } else {
            echo 'Function not callable';
        }

    } else {
        echo 'Controller ' . $controller . ' not found';
    }
}