2018年04月6日网站服务器迁移完成……

php5.2.17 升级到5.5之后提示 Strict standards: Redefining already defined constructor for class PSCWS 错误解决办法

php 苏 demo 1426℃ 0评论

本地PHP环境PHP5.5,运行以前的老项目,很多地方会报如下的错

Redefining already defined constructor for class XXX

检查代码可以发现,对应的位置是某个类的构造函数,具体写法如下:

 

/** 主类库代码 */
class PSCWS4
{  
   var $_xd;     // xdb dict handler
   var $_rs;     // ruleset resource
   var $_rd;     // ruleset data
   var $_cs = ''; // charset
   var $_ztab;       // zi len table
   var $_mode = 0;    // scws mode
   var $_txt;    // text string
   var $_res;
   var $_zis;    // z if used?(duality)
   var $_off = 0;
   var $_len = 0;
   var $_wend = 0;
   var $_wmap;
   var $_zmap;

   // 构造函数
   function PSCWS4($charset = 'utf8')
   {
      $this->_xd = false;
      $this->_rs = $this->_rd = array();
      $this->set_charset($charset);
   }

   // FOR PHP5
   function __construct() { $this->PSCWS4(); }
   function __destruct() { $this->close(); }

其中使用和类名相同点函数名作为构造函数是php4时代的写法,php5时代的构造函数是 __construct(),由于程序比较老,所以采用了上面的写法。

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

修改后的写法应该为:

/** 主类库代码 */
class PSCWS4
{  
   var $_xd;     // xdb dict handler
   var $_rs;     // ruleset resource
   var $_rd;     // ruleset data
   var $_cs = ''; // charset
   var $_ztab;       // zi len table
   var $_mode = 0;    // scws mode
   var $_txt;    // text string
   var $_res;
   var $_zis;    // z if used?(duality)
   var $_off = 0;
   var $_len = 0;
   var $_wend = 0;
   var $_wmap;
   var $_zmap;

   // FOR PHP5
   function __construct() { $this->PSCWS4(); }
   function __destruct() { $this->close(); }
   
   // 构造函数
   function PSCWS4($charset = 'utf8')
   {
      $this->_xd = false;
      $this->_rs = $this->_rd = array();
      $this->set_charset($charset);
   }

 

打赏

转载请注明:苏demo的别样人生 » php5.2.17 升级到5.5之后提示 Strict standards: Redefining already defined constructor for class PSCWS 错误解决办法

   如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情