L!MP (22.12.2011/10:45)Я тоже раздумывал, но все же остановился на Registry
AlkatraZ, Использование Registry не всегда удобно, особенно то что при его использование необходимо зараннее "загонять" в него инстанции обьектов. Опять таки, затруднен lazy initialization, не явност
То, что в него явным образом нужно загонять объекты, это не является большим недостатком, при Сервис локаторе код распухает немного больше и вызов классов идет не совсем привычным методом:
$registry->myclass = new MyClass(); // Вариант с Registry
lmbToolkit :: merge(new LogTools ()); // Вариант с сервис локатором
А загонять объект класса к примеру мне не всегда нужно при инициализации самого класса.
Простой пример:
В новом движке класс netHandler содержит все навороты по получению и обработке IP адерсаов, включая обработку черных (бан по IP) / белых списков и защиты от HTTP Flood атак. Чтоб не грузить систему в случае атаки, данный класс инициализируется ДО каких либо других. Если все проверки прошли, тогда инициализитуются остальная система и объект netHandler передается в Registry