Я работаю над старым кодом 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
в конструкторе, поскольку это не всегда одно и то же значение.