您现在的位置是:首页 > 教程 > ecshop商城教程ecshop商城教程
ecshop适应PHP7的实现方法
从蓉2024-11-27 22:20:41ecshop商城教程已有人查阅
导读说实话,ecshop这个系统,到目前也没见怎么推出新版本,如果是新项目,不太建议使用它。不过,因为我一直以来都在使用中,所以不得不更改让其适应PHP新版本。
说实话,ecshop这个系统,到目前也没见怎么推出新版本,如果是新项目,不太建议使用它。不过,因为我一直以来都在使用中,所以不得不更改让其适应PHP新版本。现在PHP 7已经出发行版了,所以更改来继续使用吧。具体的更改有以下方面:
(1)将mysql扩展的使用替换掉,改为使用mysqli或pdo:
从php5.5开始,mysql扩展将废弃了。
具体更改的文件在于includes/cls_mysql.php。这是个不小的工程,文件代码太长……
代码当中加了几个方法,用于支持事务。
(2)更改cls_image.php的gd_version()方法,将这个方法改为静态方法,并且所有调用此方法的地方,都改为静态调用。
PHP5.6开始,已经不支持不兼容的上下文调用方法, 并且产生 E_DEPRECATED 错误 (以前是 E_STRICT)。
更改如下:
includes/cls_images.php,(gd_version方法体添加static关键字)
在好几处调用此方法的地方都改为静态调用,比如includes/cls_images.php的好几个方法在调用时使用类对象调用:
(3)更改includes/lib_main.php文件的get_dyna_libs函数,该第一行的代码:
(4)includes/cls_template.php代码:
preg_replace方法,自PHP5.5开始 /e修饰符已经废弃,所以要使用preg_replace_callback代替。此代替有多处:
fetch_str方法:
涉及此改动的超多,用搜索一一找到并改动吧……这个就不列举了。
(1)将mysql扩展的使用替换掉,改为使用mysqli或pdo:
从php5.5开始,mysql扩展将废弃了。
具体更改的文件在于includes/cls_mysql.php。这是个不小的工程,文件代码太长……
代码当中加了几个方法,用于支持事务。
(2)更改cls_image.php的gd_version()方法,将这个方法改为静态方法,并且所有调用此方法的地方,都改为静态调用。
PHP5.6开始,已经不支持不兼容的上下文调用方法, 并且产生 E_DEPRECATED 错误 (以前是 E_STRICT)。
更改如下:
includes/cls_images.php,(gd_version方法体添加static关键字)
在好几处调用此方法的地方都改为静态调用,比如includes/cls_images.php的好几个方法在调用时使用类对象调用:
function make_thumb($img, $thumb_width = 0, $thumb_height = 0, $path = '', $bgcolor='')
{
$gd = $this->gd_version(); //获取 GD 版本。0 表示没有 GD 库,1 表示 GD 1.x,2 表示 GD 2.x
。。。
}
将其改为:
function make_thumb($img, $thumb_width = 0, $thumb_height = 0, $path = '', $bgcolor='')
{
$gd = self::gd_version(); //获取 GD 版本。0 表示没有 GD 库,1 表示 GD 1.x,2 表示 GD 2.x
。。。
}
还有includes/lib_base.php文件的gd_version函数,改为:
function gd_version()
{
include_once(ROOT_PATH . 'includes/cls_image.php');
return cls_image::gd_version();
}
其他文件代码在调用时,最好改为调用lib_base文件的gd_version的函数。可以搜索更改。(3)更改includes/lib_main.php文件的get_dyna_libs函数,该第一行的代码:
function get_dyna_libs($theme, $tmp)
{
$ext = end(explode('.', $tmp));
。。。
}
更改为:
function get_dyna_libs($theme, $tmp)
{
$tmp_ext = explode('.', $tmp);
$ext = end($tmp_ext);
}
end方法的接受的参数必须是引用传递值,这里使用了explode方法返回值,不可以直接套用。(4)includes/cls_template.php代码:
preg_replace方法,自PHP5.5开始 /e修饰符已经废弃,所以要使用preg_replace_callback代替。此代替有多处:
fetch_str方法:
fetch_str($source)
{
。。。
return preg_replace_callback("/{([^\}\{\n]*)}/",'self::select_replace', $source);
}
//新增的方法
private function select_replace($matches){
return $this->select($matches[1]);
}
select方法:
function select($tag)
{
。。。
$pregReplace = preg_replace_callback("/(\'\\$[^,]+)/" , function($matches){
return stripslashes(trim($matches[1],'\''));
}, var_export($t, true));
。。。
}
smarty_prefilter_preCompile方法:
$source = preg_replace_callback($pattern, function($matches){
return '{include file='.strtolower($matches[1]). '}';
}, $source);
(5)将所有类的构造函数,都去除使用类名的构造函数,保留__construct():涉及此改动的超多,用搜索一一找到并改动吧……这个就不列举了。
本文标签:
很赞哦! ()
相关文章
随机图文
-
ecshop支付方式修改支付宝付款按钮样式外观换成图片方法
ECSHOP默认的支付宝支付按钮丑爆了,通过本教程可以美化一下默认支付宝支付按钮的样式是这样的:下面我们来修改一下1.在includes/modules/ -
ecshop订单操作状态对应值说明
ecshop电子商务系统中,ECSHOP的订单有很多的状态。这些状态,是维持和保证ECSHOP后台操作订单状态转换的依据。 -
ecshop调用很新文章在任何页面显示或者随机文章
ECSHOP在任何页面调用很新文章或者随机文章步:一、让很新文章变成随机文章打开根目录下 index.php 文件查找:' ORDER BY a.arti -
ecshop自定义Flash轮播图片样式播放器的步骤示例
ECShop默认的的Flash轮播图片(首页主广告)样式有以下几种, 那么怎么样自定义个 化的flash轮播呢?以上几个flash播放器对应的位置分别是/data/flashdata
留言与评论 (共有 条评论) |