ECSHOP错误Redefining already defined constructor for class如何解决

本地PHP环境PHP5.4,安装ecshop2.7.3后,很多地方会报如下的错

Redefining already defined constructor for class XXX

使用和类名相同点函数名作为构造函数是php4时代的写法,php5时代的构造函数是 __construct(),ecshop为了兼容老版本的php,所以采用了上面的写法。

但是从php5.4开始,对于这样的两种写法同时出现的情况,要求必须__construct()在前,同名函数在后,所以只需要对调两个函数的位置即可。

解决方案:打开ecshop目录下includes/cls_captcha.php,并执行下面操作。

把代码1 放到代码2后面就解决错误了

代码1:

 /**
* 构造函数
*
* @access public
* @param string $folder 背景图片所在目录
* @param integer $width 图片宽度
* @param integer $height 图片高度
* @return bool
*/
function captcha($folder = '', $width = 145, $height = 20)
{
if (!empty($folder))
{
$this->folder = $folder;
} $this->width = $width;
$this->height = $height; /* 检查是否支持 GD */
if (PHP_VERSION >= '4.3')
{ return (function_exists('imagecreatetruecolor') || function_exists('imagecreate'));
}
else
{ return (((imagetypes() & IMG_GIF) > 0) || ((imagetypes() & IMG_JPG)) > 0 );
}
}

代码2:

 /**
* 构造函数
*
* @access public
* @param
*
* @return void
*/
function __construct($folder = '', $width = 145, $height = 20)
{
$this->captcha($folder, $width, $height);
}
上一篇:Android Studio 轻松整理字符串到string.xml中


下一篇:objc非主流代码技巧