我有问题,我不知道如何解决这个问题。
此行代码出现问题:
public function ExecuteAction() {
return $this->{$this->action}();
}
所有其他工作精细控制器成功加载但我有致命的错误。
致命错误:方法名称必须是字符串 第27行的D:\ xampp \ htdocs \ Workplace \ MVC \ lib \ BaseController.php
检查我的代码:
的index.php
$fController = new FController($_GET);
$controller = $fController->CreateController();
$controller->ExecuteAction();
Fcontorler
public function createController()
{
if(class_exists($this->controller)) {
$parent = class_parents($this->controller);
if(in_array('BaseController', $parent)) {
if(method_exists($this->controller, $this->action)) {
return new $this->controller($this->action, $this->url);
}else {
echo "Method no exists";
}
}else {
echo "Bad Controller";
}
} else {
echo "Controller ". $this->controller . " class no exists";
}
}
BaseController
abstract class BaseController {
protected $urlvalues;
protected $action;
/*
* Construct
*
* @param string $action
* @param array $url
*
*/
public function __construct($action, $urlvalues) {
$this->action = $action;
$this->urlvalues = $urlvalues;
}
/*
* Execute acction
*
*/
public function ExecuteAction() {
return $this->{$this->action}();
}
本地主机/工作场所/ MVC / index.php的控制器=你好&安培;行动=说和ID = 5
答案 0 :(得分:0)
的var_dump($控制器); object(Hello)#2(2){[“urlvalues”:protected] => NULL [“action”:protected] => NULL}
由于您在解释器期待字符串时尝试使用NULL
,因此会触发错误。
正如您的var_dump
所示,$this->action
为NULL
因此字符串插值$this->{$this->action}();
会被转换为无法调用的$this->{NULL}();
。