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

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

守着一只汪
浏览 796回答 6
6回答

呼唤远方

<?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吧。

慕码人2483693

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

德玛西亚99

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

慕码人8056858

我猜也是 __autoload 这个函数的问题. 如果你的自动加载是这个函数, 那么 spl_autoload_register('__autoload'); 试试.
打开App,查看更多内容
随时随地看视频慕课网APP