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

发布于 2022-09-05 23:59:32 字数 523 浏览 11 评论 0

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)调用方式,改动太多太大,请教一下各位,有没有什么好的修改或者调整。感谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

顾冷 2022-09-12 23:59:32
<?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');   
柠檬色的秋千 2022-09-12 23:59:32

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

故事与诗 2022-09-12 23:59:32

升级到7.2了吧?

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

把时间冻结 2022-09-12 23:59:32

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

黑凤梨 2022-09-12 23:59:32

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文