Redjik, а зачем на деструктор? В симфони есть события, некоторые на kernel.finish_request вешают.
update используется в контексте oauth провайдера, идея из FOSUser. Ну и это избавляет от инжекта всего EntityManager.
Проект на симфони. Все сервисы другс другом связаны через DI. Никакого внешнего использования контейнера как ServiceLocator. Часть сервисов прототипная.
Твой вопрос эквивалентен такому: «а можно где-нибудь глянуть на проект, где нет singleton-like дерьма?». Ну, открытых проектов я таких не видел (я вообще открытых проектов мало знаю), но я не вижу тут ничего удивительного. Я вообще, блять, не понимаю зачем использовать синглтоны. Не существует ни одной причины их использовать в современных проектах. Зачем тебе синглтон, если у тебя есть DIC, который как раз решает эту проблему. Я не понимаю, блять.
Какая тема! как же я ее пропустил-то, блин.
Я ж тут занимаюсь как-раз тем, что езжу по всевозможным галлереям их бывших величеств и смотрю на выставки картин с разными сюжетами. Вот, например: стена сисек в Венском музее
У меня нет такого дерьма, но и чистого DIC тоже нет. Разумеется все более-менее готово к DIC(зависимости в конструкторах). Но когда я пробовал внедрять тотальный DIC - мне это показалось неудобным... слишком много лишних телодвижений и кода, при не совсем ясных плюсах. Я сейчас больше по C#, но как понимаете - это пофиг
// FIXME: move it to the DIC maybe? Oh, screw it
$foo = new Foo(
new Bar(
'woohoo',
new Baz(
'hardcoded crap',
new FooBar(42, $this->get('monolog.logger.qux')),
$this->get('foobar.param')
)
)
);
return $foo->getFoo($request->get('foo_id'));
У нас проект через чистый DI реализован. Я имею ввиду что мы:
а) Не передаем внутрь DI. А иньектим только то что надо, тем самым не делаем из DI глобальный объект который и есть антипаттерн.
б) Зависимости в DI пишем на интерфейсы, а не на конкретный класс.
в) Не создаем новые классы через new