PHP / CodeIgniter 2 - вызывать метод объекта __get () только для определенного объекта - PullRequest
0 голосов
/ 18 октября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...