在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/PHP  HTML/ spl_autoload_register的問(wèn)題

spl_autoload_register的問(wèn)題

去訪(fǎng)問(wèn)一個(gè)純html文件,理論上應(yīng)該是不會(huì)訪(fǎng)問(wèn)到else里面的內(nèi)容,結(jié)果服務(wù)器在這一行$api = new $classname;報(bào)錯(cuò),而瀏覽器則是在加載完<head>標(biāo)簽中的js之后,在<body>標(biāo)簽最后的js報(bào)出500錯(cuò)誤

index大面如下

// 分析uri
$path = $_SERVER['REQUEST_URI'];
$paramerters = explode('/',$path);
//加載核心類(lèi) 初始化
//require_once DIR.'/autoload/_Autoload.php';
$len = count($paramerters) - 1;

if(preg_match('/\.html$/',$path)){
    // 純html
    $page = file_get_contents("./view/{$paramerters[$len]}");
    echo $page;
}else{
    //api接口
        $classname = $paramerters[2];
        $functioname = $paramerters[3];
        //自動(dòng)加載類(lèi)
        if(!preg_match('/\.html$/',$path)){
            define('DIR',dirname(__FILE__));
            require_once DIR.'/autoload/Autoload.php';
            $res = spl_autoload_register("\\Core\\Autoload::_autoload");
            $api = new $classname;
            $api->{$functioname}();
        }
}
回答
編輯回答
北城荒

因?yàn)?api = new $classname;有語(yǔ)法錯(cuò)誤吧。應(yīng)該寫(xiě)成:$api = new $classname();
php要先編譯再運(yùn)行,編譯時(shí)有語(yǔ)法錯(cuò)誤就終止輸出了。

2018年1月18日 15:12
編輯回答
葬憶

報(bào)錯(cuò)信息呢?
你為啥要在preg_match('/\.html$/',$path) == false的情況下,再判斷!preg_match('/\.html$/',$path)==true
可能原因如下:

  1. $classname對(duì)應(yīng)的類(lèi)未加載上;
  2. new 的時(shí)候如果報(bào)語(yǔ)法錯(cuò)誤把括號(hào)加上;
2018年9月12日 16:24
編輯回答
逗婦惱

突然想起來(lái),是瀏覽器拿到html之后,會(huì)根據(jù)里面內(nèi)容再次請(qǐng)求js等文件。之后請(qǐng)求js文件的的request(中文有點(diǎn)拗口)就會(huì)直接重定向到index.php,正則就沒(méi)有匹配成功,報(bào)500錯(cuò)誤。

2018年5月10日 03:58
編輯回答
夏木
if(preg_match('/\.html$/',$path))
去除html后的$,$表示以.html結(jié)尾,如果REQUEST_URI是xxx.html?a=1&b=2便無(wú)法通過(guò)正則匹配
2017年1月21日 10:49