安装ecshop的Strict Standards: Redefining already defined 错误提示

2016-07-07 15:12 来源:www.chinab4c.com 作者:ecshop专家

php版本: php-5.4.0RC4-Win32-VC9-x86
ecshop版本: V2.7.3 Release 1106正式版

在网站后台的系统设置>支付方式页面的顶端提示14条类似的提醒,下面是其中一条:

Strict Standards: Redefining already defined c**tructor for class alipay in F:\www\es\includes\modules\payment\alipay.php on line 85

百度google后也没找到明确的解决方法,不过初步了解到是类内的函数名跟类重名导致被系统认定为类的构造函数,但之后又出现真正的构造函数 __c**truct 所以提示对构造函数进行了再次声明什么的。但是具体怎么修改以我目前的php知识还无法判断,所以来这里求高手赐教~

回答:


1)、错误原因:
PHP 类,有两种构造函数,一种是跟类同名的函数,一种是 __c**truct()。从PHP5.4开始,对这两个函数出现的顺序做了最严格的定义,必须是 __c**truct() 在前,同名函数在后


2)、
解决方法:
调换一下两个函数的前后位置即可。
以 includes/modules/payment/alipay.php为例:
将下面这两个函数的位置互换一下就OK了,__c**truct()在前,alipay()在后
  1. function alipay() {
  2. }

  3. function __c**truct()
  4. {
  5. $this->alipay();
  6. }
复制代码


3)、
ECSHOP的很多类文件 都存在这个问题,都需要修改掉。