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 關注
- 98 瀏覽
添加回答
舉報