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

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

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

PHP
守着一只汪 2019-03-10 12:17:25
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)调用方式,改动太多太大,请教一下各位,有没有什么好的修改或者调整。感谢
查看完整描述

6 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

<?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');   
查看完整回答
反对 回复 2019-03-18
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

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

查看完整回答
反对 回复 2019-03-18
?
炎炎设计

TA贡献1808条经验 获得超4个赞

升级到7.2了吧?

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

查看完整回答
反对 回复 2019-03-18
?
慕码人2483693

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

规范代码也是一件好事,多用namespace,少用你这种写法.升级起来会累人的很.

查看完整回答
反对 回复 2019-03-18
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

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

查看完整回答
反对 回复 2019-03-18
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

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

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

查看完整回答
反对 回复 2019-03-18
  • 6 回答
  • 0 关注
  • 795 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信