Я создал шаблон реестра для своего проекта, который может создать экземпляр или получить существующую ссылку на любой объект.
Тем не менее, теперь я чувствую, что должен пройти $registry
в значительной степени все функции и конструкторы в проекте, так как большинство из них потребует создания экземпляров других классов самостоятельно. Это само по себе не так уж плохо, именно это и должен делать реестр, но я бы хотел сохранить свои функции более «чистыми», требуя только параметров, уникальных для него.
Я мог бы расширить классы до родителя, который имеет $registry
объект, но поскольку мы имеем дело с PHP, и вы ограничены расширением только одного класса, это не очень хорошее решение.
Вот пример, чтобы проиллюстрировать это лучше.
Class controller {
__construct($registry,other parameters) { check conditions; addView($registry); }
addView( viewObject($registry);
}
Любые идеи, чтобы сохранить дизайн более элегантным, не пропуская $registry
все время?
Я решил использовать $ GLOBALS [‘registry’] для моего проекта.
Это единственный глобальный используемый и разрешенный на нем. В то время как глобальные перемены не одобряются, потому что это может привести к ошибкам и усложнить поддержку кода, тот факт, что вам потребуется реестр для 99% функций, позволил проекту очистить систему от передачи реестра всем функциям, и это было единственным Глобальный значительно снижает риск неправильного использования.
Других решений пока нет …