ECSHOP PHP 5.4+兼容性修复
ECSHOP 老项目在 PHP5.4 以上就容易出问题?嗯,这事儿我也踩过坑。
经典老系统 ECSHOP 的代码风格,跟现在 PHP 的规范确实有点对不上了,尤其升级 PHP 版本之后,什么Strict Standards
、静态方法、报错级别之类的,都会让人头大。好在网上有位哥们整理了一套挺实用的修复方案,我亲测过,蛮靠谱的。
array_shift + explode那段代码,是最常见的警告源头。像$tag_sel = array_shift(explode(',', $tag));
这种组合写法,到了新版本 PHP 上就不太行了。方法其实也简单,先拆开用explode
生成数组,再判断一下是不是空的,得当就能规避掉大部分警告。
还有一个比较坑的是静态方法调用,老代码里有些地方用非静态方式去调静态函数,比如cls_image::gd_version()
,其实你只要把函数前面加个static
关键字就行了,写成
static function gd_version() { /* ... */ }
,一行代码一大片问题。再说说错误报告这一块。ECSHOP 里有些注释是//
风格的,配合高版本 PHP 的error_reporting
设置,容易抛出一堆不必要的提示。建议你把注释都统一成/* */
或者#
,在代码开头加一句:
error_reporting(E_ERROR | E_WARNING | E_PARSE);
,干净利落。如果你项目还跑在 ECSHOP 上,又刚好升级了 PHP 环境,强烈推荐你看一下这个修复方案。操作也不难,大多就是改一两行小代码,改完测试下就能用,适合像我这种不想折腾大升级的老项目。
另外,文章还附了不少相关资源链接,你想了解PHP5.4
的更新点、扩展兼容性或者别的框架问题,也能顺手看下。
如果你正头疼 PHP 版本升级的问题,可以试着把这些改法用到你项目里,搞不好一改就能跑通,少走不少弯路。
848B
文件大小:
评论区