我正在处理旧的CodeIgniter 2代码,只能通过在其顶部添加一层来进行更改,因此我受到限制。
通常在代码中,甚至在初始化之前就调用属性$this->secondary_db
,例如:
$this->secondary_db->get_all();
由于secondary_db
为空,这显然会导致致命错误。
因此,我想做的是实现魔术__get($name)
方法,但仅适用于secondary_db
,因此,仅当未通过在魔术中指定来定义$this->secondary_db
时,才使用魔术方法方法:
if ($name == 'secondary_db') { ... load db in a specific way ... }
但是,它会在不依赖__get()的某个地方的其他代码中产生其他致命错误,例如:
对重载属性Some_Controller :: $ benchmark的间接修改无效
无法通过引用分配system / core / Controller.php中的重载对象
还有另一种方法可以做到这一点,或者实现我可能已经忘记的事情吗?可以使用特征吗?
注意:我不能在构造函数中初始化secondary_db
,因为它的值并不总是相同。