我正在使用 CodeIgniter 并扩展了CI_Model
. 所以我所有的模型现在都扩展了MY_Model
。
这工作正常。
问题是我所有的模型都有一个辅助关联对象。基本上是一个从模型(通常来自数据库)获取传递数据并表示数据库中的行的类。
所以像
class Product_Model extends MY_Model{
public function get($id){
//....
return new Product($query->row());
}
}
class Product{
public function __construct(stdClass $data){
//....
self::$ci =& get_instance();
self::$model = self::$ci->products;
}
}
现在我用别名加载 Product_Model$this->load->model('product_model', 'products');
因此有self::$model = self::$ci->products;
但是现在我想要一个基础类,所有的类Product
都可以扩展。
我希望它包含更新的逻辑self::$model
。
但我需要知道模型别名。
就像是
self::$model = self::$ci->{instantiator_variable_name($this)}
这将是self::$model = self::$ci->products
现在显然该功能不存在,但它显示了我想要做什么。
我知道我可以在任何我创建的Product
或类似的地方拥有
$row = $query->row();
$row->model = $this->ci->products;
return new Product($row);
但如果可以的话,我宁愿自动化它。