我正在尝试编写自己的MY_Model基类,但我遇到了一个奇怪的问题:
/core/MY_Model.php
function __construct() {
if ( !empty($this->table)) {
// query db, etc.
}
else {
// even though that I set $this->table value
// in the child class, I always ended up here
// it's always empty!!!!
log_message('error', 'some error message');
}
// ...
}
}
/models/test_model.php
function __construct() {
parent::__construct();
}
// ...
}
即使我在子类中设置$ this->表值,我总是最终在MY_Model类中找到$ table value为空,它总是空的!有什么提示吗?!
答案 0 :(得分:10)
除非你需要特定/特殊的东西 - 你应该只使用Jamie Rumbelows" MY_Model" - 它可能比你能写的任何东西(或我)更好 - 并允许你专注于编写其他代码。无需重新发明轮子。
您可以从GitHub here
获取代码And here is an awesome tutorial向您展示如何在应用程序中使用MY_Model。
老实说 - 试一试 - 你不会后悔的。
答案 1 :(得分:2)
在模型构造函数中,执行以下操作:
class Test_model extends MY_Model{
public function __construct()
{
parent::__construct();
$this->table = 'test_model';
}
//...
}
答案 2 :(得分:1)
您不应该尝试覆盖子类中的$ table变量。你在做什么:
当你在子类中覆盖它时,它不会冒泡到父类,因为$ table只会成为子类的一部分。
您需要做的是删除子表中$ table变量的声明:
/models/test_model.php
<?php
class Test_model extends MY_Model {
function __construct() {
parent::__construct();
$this->table = 'test_models';
}
// ...
}