PHP - 用于视图的引导控制器

时间:2015-12-06 10:57:25

标签: php oop model-view-controller

我对这行代码有疑问;

当我去 localhost / 网站工作时!
当我去 localhost / welcome 网站不能正常工作!转到echo ==> 字符串 失败
当我去 localhost / welcome / other 网站工作时,但错误下降了!

严格标准:call_user_func_array()期望参数1是有效的回调,非线性方法welcome :: king()不应该在line =>的bootstrap.php中静态调用call_user_func_array([$ this-> _controller,$ this-> _methode],$ this-> _params);

bootstrap.php中的代码

if(empty($url)) 
                {
                    $name_controller = ROOT;
                    $this->_requireController($name_controller);
                    $contro = new $name_controller();
                    $contro->$name_controller();
                } 
                else 
                {
                    $this->_controller = $url[0];

                    if(isset($url[1]))
                    {
                        $this->_methode = $url[1];
                        unset($url[0]);
                        unset($url[1]);

                        $this->_params = $url ? array_values($url) : [];
                        echo "222";
                    } 
                    else 
                    {
                        echo "string";
                    }

                    $this->_requireController($this->_controller);
                    $contro = new $this->_controller();

                    if(method_exists($contro, $this->_methode))
                    {
                        call_user_func_array([$this->_controller, $this->_methode], $this->_params);
                    } 
                    else 
                    {
                        echo 'FAIL';
                    }

                }
            }

控制器/的welcome.php

class welcome extends Controller {

function __construct()
{
    parent::__construct();
}

public function welcome() 
{
  echo "work!";
}
public function other()
{
  echo "Other Work";
}
public function other_arg($arg)
{
  echo "Other Work with ".$arg;
}

}

2 个答案:

答案 0 :(得分:0)

以下是 loclahost / welcome / other 上的错误: 的 222
严格标准:call_user_func_array()期望参数1是有效的回调,非线性方法welcome :: test()不应在第177行的C:\ xampp-server \ htdocs \ bootstrap.php中静态调用
其他工作

答案 1 :(得分:0)

您可以将其设置为静态,并将其称为非静态函数,如下所示:

static::run();

或者你试过这个

$this->-controller->$this->_methode($args);

而不是

call_user_func_array([$this->_controller, $this->_methode], $this->_params);