How to override model's constructor correctly in CakePHP

风流意气都作罢 提交于 2019-12-19 03:41:28

问题


I have troubles with testing Model in CakePHP 2.0 and it seems the problem is on the model's constructor.

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

Even if I delete all its content, I still getting problems trying to run the test.

Mark Story told me:

if you have a constructor make sure you're overriding the constructor correctly. Failing to do so will cause errors like this.

What do I wrong?


回答1:


why don't you look into the core code its open source after all: https://github.com/cakephp/cakephp/blob/2.1/lib/Cake/Model/Model.php#L653

so for all your models:

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



回答2:


Rather than override the constructor, how about using beforeFilter() for controllers or the before methods for the Model such as beforeFind(), beforeValidate(), etc.




回答3:


One way that I found is to do something like this:

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

It allows you to not have to worry about what the parent gets passed. Although that code is pretty hideous.



来源:https://stackoverflow.com/questions/10153841/how-to-override-models-constructor-correctly-in-cakephp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!