Вы имеете в виду реестр Singleton
с, верно? Если это так, то похоже, что все, что вам действительно нужно, - это доступ к трем глобальным объектам повсюду, но внутри другого объекта.
Итак, если вы написали cache.php, sessions.php и database.php, которые определяют классы Cache
, Sessions
и Database
, вы хотите разместить их все внутри определенного объекта Registry
в registry.php.
Прежде всего, это здорово контролировать ПОРЯДОК создания экземпляров таким образом. Это лучше, чем просто делать require_once из cache.php, sessions.php и database.php, и внутри них вы определяете не только класс, но и единственный его глобальный экземпляр. Это контролирует ПОРЯДОК создания экземпляра тем, как вы его включаете / требуете. Вид неряшливый. Лучше иметь объект Registry, чтобы, когда он был создан и стал глобальным $registry
, первым делом он контролировал создание глобальных объектов в том порядке и порядке, в котором вы хотите.
Во-вторых, замечательно иметь один Registry.php с одним глобальным $ Registry. Определение глобальных переменных в разных файлах становится сложным для управления.
Теперь, когда я согласился с вами, я задаю вам важный вопрос. Как вы видите, что они разные:
$registry->getObject('session');
$registry->getObject('database');
$registry->getObject('cache');
против
$registry->getSession ();
$registry->getDatabase ();
$registry->getCache ();
Лично мне нравится последнее. Вы не используете строку «сессия» для ссылки на объект Session, полученный через супер-универсальный getObject
. Вместо этого вы используете getSession()
для получения сеанса. Читается лучше.
Ваш реестр, в конце концов, знает все о трех глобалах, он создает их явно, поэтому он уже заблокирован в одной цели. Добавление конкретных методов, также связанных с его единственной целью, не является «слабым» или «плохим». Вместо этого я думаю, что это меньше кода и легче для глаз.