symfony framework

индекс
85,28

Философия Symfony 2

Только в том случае, если вы вчера спустились с гор, вы не слышали ничего о Symfony 2. Всех остальных так или иначе задела шумиха в твиттере и различных блогах. На самом деле, я сегодня не буду говорить ничего о каких-то фичах новой Symfony. Если вы хотите какой-то конкретики, посмотрите Quick Tour на сайте Symfony Reloaded. Данный пост скорее о философии, которой придерживается Symfony 2. Надеюсь, что после прочтения вам станут понятны многие наши решения относительно новой версии фреймворка.

Symfony 2 — это улучшенная архитектура. Старые классы, доставшиеся по наследству от Mojavi, ушли в небытие. Их место заняло чрезвычайно гибкое ядро. Это позволяет строить с помощью Symfony как сайты-визитки, так и порталы, настолько крупные, насколько того требует задача. Решение об изменении архитектуры позволило нам учесть ошибки, допущенные в предыдущем поколении фреймворка, а также внять всем пожеланиям, собранным за 4 года.

Symfony 2 останется самодостаточным фреймворком, но с несколько иной философией. Вы знаете, как мы не любим изобретать велосипеды, и уже в symfony 1 мы использовали множество разработок третьих лиц — Propel, Doctrine, SwiftMailer и т.д. В Symfony 2 мы поднимаем эту мысль на новый уровень. Сосредотачиваясь на разработке низкоуровневого ядра, мы стараемся использовать сторонние продукты везде, где только возможно.

Первое, что бросается в глаза — логгер и кэш-подсистема теперь используют библиотеки Zend Framework. Мы долгие годы разрабатывали и поддерживали собственные подсистемы, но сейчас мы постарались понять, что же лучше для проекта в долгосрочной перспективе. Не учитывая личные интересы. (курсив переводчика)

Но, конечно же, мы не должны и не будем использовать какие-то библиотеки просто потому что они существуют. Пять лет назад я решил создать собственную библиотеку юнит-тестирования lime, отказавшись от использования существовавших тогда SimpleTest и PHPUnit. И у меня были на то причины: в противовес этим монстрам я хотел сделать нечто простое, что позволило бы понизить барьер для начала тестирования. Но с того времени многое поменялось. PHPUnit стал библиотекой для тестирования PHP де-факто, и разработчикам больше нравится работать с цельной концепцией тестирования. Вобщем, было решено использовать PHPUnit в качестве подсистемы тестирования в Symfony 2.

Я полностью согласен с тем, что Paul Lomax написал об этом в твиттере: «Используй то, что есть под рукой. Осознай, что это полный отстой. Напиши свое. Подожди, пока кто-то выпустит меньший отстой. Забрось свое. Используй чужое.»

Используя PHPUnit вместо lime, мы снижаем нагрузку на своих разработчиков: им придется поддерживать меньше кода. Это как бы взять себе в команду дополнительно Себастьяна Бергманна — крутого PHP-разработчика, который помогает нам сделать Symfony еще лучше. Помимо этого, использование PHPUnit дает еще несколько бонусов:
  • Мы сможем плотнее интегрироваться с другими разработками — Doctrine, Propel, Zend Framework,...
  • Появляется возможность плотнее интегрироваться со средой разработки: IDE, системами непрерывного тестирования и т.п.
  • Появляется куча новых фич, которых нет в lime
  • Вам нужно будет меньше учиться вещам, специфичным для Symfony

Бернард продолжит работу над Lime 2, но при этом у него будет достаточно времени для работы над основным проектом Symfony, в частности, новым суб-фреймворком форм.

Использование сторонних разработок — это круто, но только в том случае, если их можно подцепить к ядру плотно (cohesive) и прозрачно (transparent). В игру вступает Dependency Injection Container. Вообще, вся Symfony 2 навешана на Dependency Injection Container. Кроме гибкости, которую эта штуковина дает разработчику, это еще и отличный инструмент подцепления сторонних разработок. Если вам интересна эта тема, посмотрите на плагин DoctrineBundle или SwiftMailer, и вы поймете, почему я так восторгаюсь.

И да, не забывайте, что Symfony 2 еще не готова. Мы опубликовали релиз, чтобы получить обратную реакцию на ранних стадиях разработки. Пожалуйста, если вы не равнодушны к развитию фреймворка, попробуйте альфа-версию на вкус, и напишите нам. Чем больше, тем лучше.

От автора перевода: Symfony 2 — это Dependency Injection Core, не более, и не менее. Удобный клей, которым вы склеиваете ORM, Mailer, кэширование, логгер, шаблонизатор, формы и т.д. Еще более продуманный, чем 1.x, еще более удобный, еще более гибкий. Но не размывается ли тем самым понятие фреймворка? Ведь фреймворк — это набор правил, набор инструментов, набор концепций, которые позволяют строить приложение быстро, дешево и качественно. Если очень сильно гиперболизировать тренд, который избрала команда Symfony, то в итоге должен получиться продукт, не содержащий ни единой строчки кода, а всего лишь лаконичный документ о том, как подружить вместе Doctrine, PHPUnit и Zend_Forms.
+5
6 марта 2010, 01:33
9

комментарии (10)

0
Davert #
А кто-то может прокомментировать, что есть в Зенд кеше и логгере такого, чего нет в симфоневском?

Плюс не пойму, для их использования код должен быть адаптирован к 5.3, успеют ли Зендовцы это сделать.
0
psylosss #
Даже если там нет ничего, что не умеет родной симфониевский, то использование «родного» не согласуется с выбранной философией. По 5.3… насколько я знаю, обратная совместимость позволит использовать зенд и на 5.3
+1
chEbba #
Zend уже несколько версий назад имеет совместимость с 5.3 (на практике тоже проверенно).
Кроме того к релизу Symfony 2.0 думаю будет и релиз ZF 2.0
0
moroz1999 #
О чем статья-то? Реклама, и не более того, потому что нужны примеры и схемы архитектуры.
Да, в статье есть отсылки к Quick Tour и документации, но я и без статьи могу набрать в гугле «Symfony documentation».

Было бы здорово именно заострить внимание на архитектуре фреймворка для тех, кто пользуется иными решениями, но хотел бы оценить, насколько собственный велосипед всё еще стоит продолжения использования.
+1
psylosss #
Дмитрий, статья о философии фреймворка. В ней объясняются концептуальные решения авторов. Над-архитектурные. Об архитектуре вы можете прочитать здесь, пример здесь (Your first Application), набрав в гугле «Symfony documentation», вы получите ссылки на документацию к 1.х, но никак на не философию 2.0.

Что касается своего велосипеда, то это тема для отдельного топика. Вероятно, я соберу как-нибудь собственные мысли в пост, и мы сможем вернуться к дискуссии. Пока лишь скажу, что я полгода назад принял то же самое решение, что и команда Sensio Labs: отодвинул в сторону личные амбиции, оставил свой NextPage, над которым работал 3 года, и сделал выбор в пользу публичной разработки — Symfony. Еще не было повода жалеть.
–2
Zubchick #
Либо я с гор, либо автор перехвалил свой фреймворк :D
0
RommeDeSerieux #
Оно всё так же тормозит?
0
psylosss #
+2
pvasili #
Обратил внимание, что большинство сайтов поклонников движка сделаны на WP. Хотелось попробовать, но как то…
0
aps #
А как должно быть?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.