第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在字符串 PHP 上執(zhí)行函數(shù)

如何在字符串 PHP 上執(zhí)行函數(shù)

PHP
青春有我 2022-09-12 12:52:44
當(dāng)我在學(xué)校項目上工作時,我遇到了一個問題。我已經(jīng)制作了一個路由器類,它可以獲得正確的文件,但我得到以下錯誤:致命錯誤: 方法 mvc\App::__toString() 不得引發(fā)異常,捕獲錯誤: 調(diào)用成員函數(shù) getHTML() 字符串 /選擇/燈/htdocs/學(xué)校/測試PHP/mvc/公共/索引.php第 0 行echo 返回正確的文件路徑,因此這不是我遇到的問題。我認(rèn)為問題是因為我嘗試將函數(shù)執(zhí)行到字符串中。有誰知道我該如何解決我的問題?應(yīng)用類:<?phpnamespace mvc;class App{    private $router;    public function __construct(){        $this->router = new \mvc\Router();    }    public function __toString(){        try {            echo $this->router->getView(); //this returns the correct file path             return $this->router->getView()->getHTML();        } catch (Exception $e) {            return $e.getMessage;        }    }}?>路由器.php:<?phpnamespace mvc;class Router{private $route;private $view;private $controller;private $model;public function __construct(){    require_once(LOCAL_ROOT. "php/Routes.php");    if (isset($_GET['route'])){        $this->route = explode("/" , $_GET['route']);    }    $route = isset($routes[$this->getRoute()])? $this->getRoute() : DEFAULT_ROUTE;    $this->controller = "\\controllers\\". $routes[$route]['controller'];    $this->view = "\\views\\". $routes[$route]['view'];    // $model = "\\models\\". $routes[$route]['model'];}private function getRoute(){    return count($this->route) > 0 ? $this->route[0] : DEFAULT_ROUTE;}public function getView(){    return $this->view;}}?>路線.php<?phpdefine("DEFAULT_ROUTE", "home");$routes = array("home" => array(    "view" => "HomeView",    "controller" => "HomeController",),"form" => array(    "view" => "FormView",    "controller" => "FormController",),"test" => array(    "view" => "TestView",    "controller" => "TestController",),)?>測試視圖.php<?phpnamespace views;class TestView extends \mvc\View{public function getHTML(){    // return 'dit is testView';    $klik = $this->controller->getGetData("klik");    $output = "";    $output .= "<h1>".$klik++ ."</h1>";    $output .= "<a href=\"test?klik=$klik\">klik</a>";    $output .= "<br>";    return $output;}}?>
查看完整描述

1 回答

?
冉冉說

TA貢獻(xiàn)1877條經(jīng)驗 獲得超1個贊

問題:


好的,所以問題是你從字符串調(diào)用函數(shù)。


這是類中的方法:getViewRouter


public function getView(){

    return $this->view;

}

此方法返回一個字符串:


$this->view = "\\views\\". $routes[$route]['view'];

然后,您正在嘗試從以下字符串調(diào)用方法:


return $this->router->getView()->getHTML();

可能的解決方案:


顯然,您正在嘗試訪問類中的方法,因此在不了解有關(guān)您的設(shè)置的更多信息的情況下,很難獲得確切的信息,但是我會在下面進(jìn)行猜測,您可以在注釋中指導(dǎo)我朝著正確的方向前進(jìn)。getHTMLTestView


如果將類中的構(gòu)造函數(shù)更改為:App


public function __construct(){

    $this->router = new \mvc\Router();

    $this->testView = new \views\TestView();

}

然后,您可以將方法更改為以下內(nèi)容:__toString


echo $this->router->getView(); //this returns the correct file path 

return $this->testView->getHTML();

我不確定你為什么會這樣做,然后,通常是一個或另一個,但如果你更詳細(xì)地闡述你預(yù)期的輸出,我可以幫你更多,或者希望我的解釋已經(jīng)給了你足夠的工作。echoreturn


溶液:


閱讀注釋后,看起來要從方法的結(jié)果實例化類,可以通過將結(jié)果設(shè)置為變量并從該字符串調(diào)用新類,然后從該類調(diào)用該方法來執(zhí)行此操作。getView


$class = $this->router->getView();

$class = new $class;


return $class->getHTML();


查看完整回答
反對 回復(fù) 2022-09-12
  • 1 回答
  • 0 關(guān)注
  • 94 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號