(2)ecshop更改cls_image.php的gd_version()方法,将这个方法改为静态方法,并且所有调用此方法的地方,都改为静态调用。
PHP5.6开始,已经不支持不兼容的上下文调用方法, 并且产生 更改如下: includes/cls_images.php,(gd_version方法体添加static关键字) /** * 获得服务器上的 GD 版本 * * @access public * @return int 可能的值为0,1,2 */ static function gd_version() { .... } 在好几处调用此方法的地方都改为静态调用,比如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的函数。可以搜索更改。
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]); }
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(): 涉及此改动的超多,用搜索一一找到并改动吧……这个就不列举了。 (责任编辑:好模板) |