Не нужно заботиться о создании и инициализации связанных объектов (классов).
"Эта" нужная штука называется IoC Container
http://wiki.agiledev.ru/doku.php?id=ooad:manage_dependencies_in_php_code , которая, (в зависимости от конкретной имплементации) действительно может использовать Реестр
http://martinfowler.com/articles/injection.html
Здесь речь идёт о такой-себе глобальной фабрике-сингелтоне как таковой, к которой обращаются некоторые объекты для создания других объектов, но НЕ содержащей никакой информации о зависимости объектов (и соответственно не умеющей порождать зависимые объекты).
То есть просто "глобальная" свалка объектов.
Теперь, если я например, придерживаюсь стандартов кодирования диктуемых данным фреймворком, то что бы создать просто какой-нить Value Object в одном методе, для передачи в другой метод (ярус, слой, уровень и т.д), я должен его "регистрировать" в этой свалке и хранить там себе до скончания работы инстанса конфигурации сайта, порождённой конкретным запросом... зачем такой перерасход памяти.
Ведь, например, объекты создаваемые раз-два за весь вариант использования, в зависимости от БП, в некоторых методах, вместо того, что бы уничтожаться, продолжают жить вместе с другими используемыми объектами.
Вот именно такое приложение мне трудно себе представить... а точнее - его архитектурную оправданность.
Например, объект-регистратор (пул) хранит в себе ссылку на объект для работы с БД (допустим, DB). При обращении к пулу возвращается ссылка на объект DB. И тут может случиться ситуация, когда в одном месте программы мы меняем какие-то свойства (коннект, к примеру) объекта DB, и эти изменения повлияют на работоспособность другой части программы. В этом случае требуется workaround, такой как копирование объекта или создание нового.
описанная проблема чаще всего решается той или иной парадигмой Обозревателя. Так же, это классический случай полезности и оправданности применения Сингелтона, но не некоего базового ф-нала, придающего ВСЕМ объектам ф-ность этого паттерна, путём организации глобальной помойки ВСЕХ объектов
Также нужен какой-то механизм, который будет гарантировать наличие нужного объекта в пуле.
ну да, интерпретатор PHP выступает таким гарантом ) вместе с логикой БП, если в ней (логике) нет ошибок... ИМХО, слишком дорогое страхование получается
Еще может быть такая ситуация, как инициализация сложного объекта (свойства которого - объекты других "тяжеловесных" классов). Тогда, по правилам пул должен будет полностью проинициализировать объект перед тем, как его вернуть, хотя нам в конкретном случае может этого не требоваться. Тогда придется докручивать пул техниками lazy loading.
чего-чего делать? )
имхо, IoC и здесь выруливает
Вобщем, как и любой инструмент, пул объектов надо использовать с умом.
именно, ПУЛ объектов, но не ПУЛ ВСЕХ объектов (вспомогательных, временных и прочая байда) системы, который стал ПУЛ лишь только в силу побочного эффекта желания наделить ВСЕ объекты системы сингельтоно-подобными способностями
хз, ИМХО это лишнее для любого архитекрурного (а тем более архитектурно-определяющего - каркас приложений) решения... возможно, при оччень-оччень больших приближениях - как некая запись "макросов" при демонстрации возможностей движка
-~{}~ 11.07.08 19:30:
... ну под макросами имеется ввиду сериализация и десериализация всех объектов хранимых в этом ПУЛе, в определённой последовательности