PHP 5.4.3中引发了此错误,我找到的解决方案是隐藏错误。
error_reporting(E_ALL ^ E_STRICT);
但我想解决它,而不是隐藏它。你能解释为什么抛出这个错误以及如何修复它吗?
这是错误:
严格标准:重新定义已定义的VisanaObject类的构造函数 第33行/home/template/public_HTML/project/activecollab/angie/classes/VisanaObject.class.php
这是该类的代码:
class VisanaObject {
/**
* Object constructor
*
* @param void
* @return Object
*/
function VisanaObject() {
$args = func_get_args();
// Call constructor, with or without args
if(is_array($args)) {
call_user_func_array(array(&$this, '__construct'), $args);
} else {
$this->__construct();
} // if
} // VisanaObject
/**
* Construct the VisanaObject
*
* @param void
* @return VisanaObject
*/
function __construct() {
} // __construct
} // VisanaObject
答案 0 :(得分:8)
这是一个PHP回归。 PHP使用类名作为构造函数方法,并且没有正式的__construct()
魔术方法。现在有__construct,但是“class name as function = constructor”是为了向后兼容而保留的。
所以你有
class foo {
function foo() { ... this is a constructor }
function __construct() { .. this is another constructor ... }
}
重命名VisanaObject
方法,或将其代码移至__construct()
。