Многие люди начинают использовать контейнеры Dependency Injection для управления своими объектами вместо использования синглетонов.Возможно, стоит посмотреть?Тогда все, что вам нужно, это убедиться, что объекты могут получить доступ к контейнеру.Оттуда вы можете получить все остальное.
Лично я использую sfServiceContainer от Symfony Components.Это автономный DI-контейнер, и он кажется довольно популярным в наши дни.
Обновление
Вам не нужно , чтобы использовать фреймворк или библиотека.Статьи Фабьена Потенциера по внедрению зависимостей должны дать вам достаточно хорошее представление о DI, чтобы реализовать свой собственный.Но зачем изобретать велосипед?Не используется хороший, существующий запах библиотеки NIH .
Обратите внимание, что помимо sfServiceContainer, который я использую, есть много других библиотек DI.Также обратите внимание, что sfServiceContainer - это полностью автономная библиотека.Для этого не нужен Symfony или какой-либо другой фреймворк.Все, что для этого нужно - это старый добрый PHP.