为了账号安全,请及时绑定邮箱和手机立即绑定

spl_autoload_register的问题

spl_autoload_register的问题

扬帆大鱼 2019-03-14 18:19:21
去访问一个纯html文件,理论上应该是不会访问到else里面的内容,结果服务器在这一行$api = new $classname;报错,而浏览器则是在加载完<head>标签中的js之后,在<body>标签最后的js报出500错误index大面如下// 分析uri$path = $_SERVER['REQUEST_URI'];$paramerters = explode('/',$path);//加载核心类 初始化//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];        //自动加载类        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}();        }}
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

突然想起来,是浏览器拿到html之后,会根据里面内容再次请求js等文件。之后请求js文件的的request(中文有点拗口)就会直接重定向到index.php,正则就没有匹配成功,报500错误。

查看完整回答
反对 回复 2019-04-08
?
暮色呼如

TA贡献1853条经验 获得超9个赞

if(preg_match('/\.html$/',$path))

去除html后的$,$表示以.html结尾,如果REQUEST_URI是xxx.html?a=1&b=2便无法通过正则匹配


查看完整回答
反对 回复 2019-04-08
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

因为$api = new $classname;有语法错误吧。应该写成:$api = new $classname();
php要先编译再运行,编译时有语法错误就终止输出了。

查看完整回答
反对 回复 2019-04-08
  • 3 回答
  • 0 关注
  • 436 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号