Я делаю это немного по-другому. У меня обычно есть глобальный объект приложения (App). Внутри этого объекта я делаю некоторую базовую инициализацию, например, создаю свои объекты БД, кеширую объекты и т. Д.
У меня также есть глобальная функция, которая возвращает объект App .... таким образом (определение объекта приложения не показано):
define('APPLICATION_ID', 'myApplication');
${APPLICATION_ID} = new App;
function app() {
return $GLOBALS[APPLICATION_ID];
}
Итак, я могу использовать что-то вроде следующего в любом месте кода для ссылки на объекты в глобальном объекте:
app()->db->read($statement);
app()->cache->get($cacheKey);
app()->debug->set($message);
app()->user->getInfo();
Это не идеально, но я считаю, что это облегчает ситуацию во многих обстоятельствах.