升级PHP版本之后遇到的问题

coachmans
  • 4.6k

php版本由原来的5.4升级到7之后,整站类的引入都不行了
原代码

//原来调用方式
$total = \packages\lib\page::total($id);

报错

Fatal error: uncaught Error: Class '\packages\lib\page' not found in D:\workstation\......page.php:23 Stack trace

解决

//修改成这样就OK了
require_once(../core/packages/lib/page.php);
$total = page::total($id);

问题来了,项目里面有太多的这种\packages\lib\page::total($id)调用方式,改动太多太大,请教一下各位,有没有什么好的修改或者调整。感谢

回复
阅读 4.2k
5 个回答
灵风子
  • 446
<?php
function My_Autoload ($path) {
    $class = explode("\\", $path);
    $_class = end($class);
    $file = "../core/packages/lib/". $class. '.php';
    if (file_exists($file)) {
        require_once($file);
    }   
}
spl_autoload_register('My_Autoload');   

你贴的并不是主要的方法, 我是想知道为什么在低版本可以运行?
你不应该给看一下 自动载入类是怎么实现的?

升级到7.2了吧?

估计以前自动加载用的“__autoload”,这玩意儿在PHP7.2废除了,改spl吧。

php小菜鸟
  • 3k

悬空异人的方法应该是最简便的,放入口,或者核心代码里面,像packageslibpage,切割之后,include,再new。include要判断文件是否存在,要include哪个文件夹,加上if语句来区分就好了。自动加载写一次就好了,类找不到的时候,自动执行方法!

我猜也是 __autoload 这个函数的问题.

如果你的自动加载是这个函数, 那么 spl_autoload_register('__autoload'); 试试.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏