Хоть и "рвет шаблон", но тем не менее, согласен с данным утверждением.
Чтоб не быть голословным, приведу простой для понятия пример на практике нашего грядущего JohnCMS-7
===
Как все помнят, у нас были системные настройки, которые хранились в таблице cms_settings.
Потом база дегралась ядром и системные настройки были доступны глобально. в виде переменной-массива $set
В новой версии мы избавились от этой таблицы (-1 в к-ве запросов к БД) и перенесли настройки в файл, сами настройки доступны через контейнер.
Более того, эти настройки доступны как объект, в виде реализации (путем наследования) возможностей ArrayObject.
Для чего? А вот щас объясню, тут и кроется главный ништяк
Любители кошерных блокнотов сразу могут дальше не читать, информация только для почитателей IDE.
Глянем
сюды.
Для справки: ArrayObject позволяет обращаться к объекту как к обычному массиву, так и в объектной методике.
Вроде бы в классе ничего и нет, нифига не реализуется и при беглом рассмотрении его (данный класс) можно было бы смело похерить.
Но если глянуть практическое применение, тут уже выявляются явные преимущества!
К примеру: если глянем
сюды, то видно, что мы запрашиваем объект системного конфига (это единственный напряг, где нужно дернуть объект).
А далее одни удобства.
- Есть ЧЕТКАЯ привязка (переменные привязаны к конкретному объекту), что делает элементарным последующий рефакторинг.
- ОГРОМНОЕ удобство в том, что в IDE действует автоподстановка и вам в большинстве случаев не придется лезть в мануалы. чтоб изучать API, автоподстановка все подскажет.
- Если
ВНЕЗАПНО Вам захочется ухнать, ГДЕ используется данная переменная, в IDE просто кликните на контекстном меню "find usages" и будет вам счастье
.gif)
- ну и разумеется, это ОБЪЕКТ со всеми вытекающими, Вы можете в полной мере его использовать.