如何在CakePHP中正确覆盖模型的构造函数

时间:2012-04-14 13:03:29

标签: cakephp testing constructor overwrite

我在CakePHP 2.0中测试Model时遇到了麻烦,似乎问题在于模型的构造函数。

public function __construct(){
    parent::__construct(); 
    $this->_pagi_cuantos = 2;
}

即使我删除了所有内容,我仍然在尝试运行测试时遇到问题。

马克故事告诉我:

  

如果你有一个构造函数,请确保你重写了构造函数   正确。如果不这样做会导致这样的错误。

我错了什么?

3 个答案:

答案 0 :(得分:20)

为什么不研究核心代码 毕竟它是开源的: https://github.com/cakephp/cakephp/blob/2.1/lib/Cake/Model/Model.php#L653

所以对于你的所有模特:

public function __construct($id = false, $table = null, $ds = null) {
    parent::__construct($id, $table, $ds);
}

答案 1 :(得分:6)

而不是覆盖构造函数,如何为控制器使用beforeFilter()或使用模型的before方法,如beforeFind(),beforeValidate()等。

答案 2 :(得分:1)

我发现的一种方法是做这样的事情:

function __construct() {
    call_user_func_array(array('parent', '__construct'), func_get_args());
}

它允许您不必担心父传递的内容。虽然那段代码很可怕。