Заранее извиняюсь, что рассматриваю Symfony в совокупности с Doctrine, но иначе не представляю зачем рассматривать отдельно их. Это как смотреть на абстрактного коня в вакууме. Да, можно поставить не Doctrine, но она идет как коробочное решение, так что не обессудьте.
Итак, используется Symfony 2 с Doctrine все конфиги в Yaml. Конфиги Doctrine после первого запуска кешируются в array(по умолчанию) Слева как есть, справа с изменением YamlParser на нативное расширение для PHP:
Это трейс небольшого проекта. В большом, доля парсинга Yaml у нас достигает 50% всего времени. Исследование профайлера показывает, что всё это хозяйство дёргается из bootstrap.php.cache
Так что у меня пока язык не повернется сказать, что:
Во «взрослых» фреймворках уже давно реализованы конфигураторы, компилирующие на продакшне различные форматы конфига в php-файлы.
p.s.
не отрицаю, что возможно это можно пофикить, но пока не до этого было.
Эм, а каким образом архитектура проекта заключается в сортировке классов по файлам?
Я не считаю что именно способ расположения классов является неудачным решением.
На мой взгляд, подобная свобода (которая является на самом деле ограничением), заставит разработчика использовать IDE и поиск класса по названию, что в результате повысит его скорость нахождения нужного участка кода.
А текущая практика раскидывания файлов по неймспейсам содинаковым наименованиям файлов, меня так вообще удручает.
Привет вам от 20 файлов Data.php в проекте и поиску по названию файла.
Можно узнать, а зачем ещё 1 framework, когда есть Yii и Symfony 2?
Ои оба покрывают всё множество извращенцем своими различиями в подходах к разработке веб-приложений.
Сейчас проходит «Google Вперед» по городам России. Первый город в очереди — Казань.
Мероприятия из разряда реклама google. Ничего полезного, все презентации на уровне туториалов первых двух листов. Выступающие не знают продукт, который представляют. Самое ценное там — это бесплатная еда.
Второй момент: логика, «размазанная» по приложению. Один функционал на уровне Entity, другой — в сервисах, третий — в котнтроллерах. Это, пожалуй, самый сложный момент, который относится больше не к «разработке» как таковой, а скорее к процессуальной составляющей.
Мы решали это путем введеления кретериев которые бы указывали в какой слой выводить эту логику и выделяли в документ «Руководство разработчика», в котором велся changelog.
Quake слишком хардкорен. Люди не хотят столько сложностей (учет респауна, аминг брони, пушек и мегахалфа, правильная распрыжка). Да и количество оружие, которым нужно хорошо владеть уменьшилось.
С ростом приложения возникает опасность сделать его слишком сильно-связанным, а это сделает систему неповоротливой и будет мешать изменению кода.
Не буду в очередной раз описывать, что такое IOC/DI и с чем его едят, просто нужно взять за правило:
Не создавать зависимости явно
Использовать IOC-контейнеры
Явное лучше чем не явное.
IOC-контейнеры не облегчают жизнь, лишь позволяют делать конфигурируемыми некоторые элементы. Втыкать их везде приложение — зло.
Итак, используется Symfony 2 с Doctrine все конфиги в Yaml. Конфиги Doctrine после первого запуска кешируются в array(по умолчанию) Слева как есть, справа с изменением YamlParser на нативное расширение для PHP:
Это трейс небольшого проекта. В большом, доля парсинга Yaml у нас достигает 50% всего времени. Исследование профайлера показывает, что всё это хозяйство дёргается из bootstrap.php.cache
Так что у меня пока язык не повернется сказать, что:
p.s.
не отрицаю, что возможно это можно пофикить, но пока не до этого было.
Вот вам консоль — секрета уже давно нет :)
Я не считаю что именно способ расположения классов является неудачным решением.
На мой взгляд, подобная свобода (которая является на самом деле ограничением), заставит разработчика использовать IDE и поиск класса по названию, что в результате повысит его скорость нахождения нужного участка кода.
А текущая практика раскидывания файлов по неймспейсам содинаковым наименованиям файлов, меня так вообще удручает.
Привет вам от 20 файлов Data.php в проекте и поиску по названию файла.
Что-то с этим делать надо в PHP, но что?
Ои оба покрывают всё множество извращенцем своими различиями в подходах к разработке веб-приложений.
Мероприятия из разряда реклама google. Ничего полезного, все презентации на уровне туториалов первых двух листов. Выступающие не знают продукт, который представляют. Самое ценное там — это бесплатная еда.
Получается до 2012 года никаких закладок в системе не было и никаким спецслужбам ничего не утекало?
Мы решали это путем введеления кретериев которые бы указывали в какой слой выводить эту логику и выделяли в документ «Руководство разработчика», в котором велся changelog.
Вы с корейцами в StarCraft играть пробывали? -))
Явное лучше чем не явное.
IOC-контейнеры не облегчают жизнь, лишь позволяют делать конфигурируемыми некоторые элементы. Втыкать их везде приложение — зло.