1 回答
TA贡献1877条经验 获得超1个赞
问题:
好的,所以问题是你从字符串调用函数。
这是类中的方法:getViewRouter
public function getView(){
return $this->view;
}
此方法返回一个字符串:
$this->view = "\\views\\". $routes[$route]['view'];
然后,您正在尝试从以下字符串调用方法:
return $this->router->getView()->getHTML();
可能的解决方案:
显然,您正在尝试访问类中的方法,因此在不了解有关您的设置的更多信息的情况下,很难获得确切的信息,但是我会在下面进行猜测,您可以在注释中指导我朝着正确的方向前进。getHTMLTestView
如果将类中的构造函数更改为:App
public function __construct(){
$this->router = new \mvc\Router();
$this->testView = new \views\TestView();
}
然后,您可以将方法更改为以下内容:__toString
echo $this->router->getView(); //this returns the correct file path
return $this->testView->getHTML();
我不确定你为什么会这样做,然后,通常是一个或另一个,但如果你更详细地阐述你预期的输出,我可以帮你更多,或者希望我的解释已经给了你足够的工作。echoreturn
溶液:
阅读注释后,看起来要从方法的结果实例化类,可以通过将结果设置为变量并从该字符串调用新类,然后从该类调用该方法来执行此操作。getView
$class = $this->router->getView();
$class = new $class;
return $class->getHTML();
- 1 回答
- 0 关注
- 73 浏览
添加回答
举报