суббота, 31 января 2009 г.

Знакомьтесь, symfony

Что такое symfony?
Symfony — фреймворк с открытым кодом, полностью написанный на PHP5. Использование фреймворка позволяет создавать более структурированный, читаемый код и упрощает программирование хотя бы потому, что набор сложных операций часто можно заменить одной строчкой кода. Symfony основан на идее MVC (MVC pattern) и создан для упрощения разработки веб-приложений. Фреймворк включает в себя множество инструментов и классов, призванных максимально сократить время разработки сложного веб-приложения. Также symfony автоматизирует наиболее популярные и частые задачи, что позволяет разработчику уделить больше внимания особенностям данного конкретного проекта. (из официальной документации)
Основные возможности Symfony:
  • MVC архитектура
  • ORM Propel
  • Специальные средства, упрощающие создание шаблонов страниц
  • Управление многоуровневым кэшем (например, можно кэшировать разные части View)
  • Наличие development и production среды (development/production environment). Причем их может быть несколько.
  • Scaffolding — автоматически генерируемый модуль для управления содержимым таблицы из базы данных
  • Человеко-Понятные URL (ЧПУ)
  • Многоязычность (i18n)
  • Поддержка AJAX
  • Еще много чего
Symfony можно установить как на Unix-систему так и на Windows. Все что нужно — установленный на машине веб-сервер и PHP5. Поскольку для работы с БД используется Propel, то отсюда поддержка MySQL, PostgreSQL, Oracle, MSSQL и целого ряда других СУБД. Плюсом является также море конфигурационных файлов, благодаря которым разработчик может контролировать почти все. В Symfony встроены специальные инструменты для тестирования, отладки и автоматического создания документации. (цитата отсюда)

Но начну по порядку. Узнала о symfony я совсем недавно, около полугода назад. Перед нами встал вопрос о выборе фреймворка для нового проекта. Предпочтителен был РНР, также среди требований были: постоянная поддержка со стороны разработчиков, обновления, удобная работа с Ajax и т.д. Вот тогда-то одни человек из нашей команды и заметил symfony. На деле фреймворк оказался очень прозрачным, легким в освоении, быстрым в разработке. Единогласный выбор нашей команды пал на него.

На данный момент существует три стабильные версии symfony. Сравнить версии, просмотреть историю изменений и скачать можно здесь. Основное различие между 1.0 и 1.1 – работа с формами. Различия серьезные и я настоятельно рекомендую работать с версией не ниже 1.1. Документация по работе с формами даже вынесена в отдельную книгу. К сожалению, в электронном виде доступны только некоторые, основные главы. Однако постепенно книга дополняется сначала было только 4 главы, теперь уже 6. В версии 1.2 основные изменения претерпели система роутинга и генератор админской части – он был полностью переписан.

Для изучения азов разработчиками созданы два учебных проекта: самый первый - Askeet для версии 1.0 и более новый Jobeet для версии 1.2. Оба проекта представляют собой пошаговые инструкции и рассчитаны на 24 часа. Именно такое время разработчики считают достаточным для изучения азов фреймворка. Лично я пока работаю с версией 1.1 и для изучения придумала свой собственный проект, который уже практически завершен и скоро выйдет в свет.

Моменты, которые меня очень порадовали:
  • Автоматизация разработки экономит массу времени. Например, для создания нового модуля вам понадобятся 4 новые папки и как минимум 3 новых файла (в силу архитектуры MVC). В symfony вам не придется создавать их вручную.
  • Удобство работы с формами. Конечно, многое вам придется доработать самим, но основная работа выполняется автоматически. Кроме того, очень легко обновить все формы в соответствии с изменениями в базе данных.
  • Оказалось довольно большое сообщество, в том числе и русскоязычное. Если возникнут проблемы, всегда можно найти ответ на форуме.
Есть и большой минус - документация. В книгах все описано очень сжато, некоторые моменты вообще упущены. С переводом на русский язык тоже слабовато. Перевод идет медленнее, чем выпуск новой версии фреймворка.

Если вы колеблетесь между выбором symfony или ZendFramework, то загляните сюда и сравните структуры фреймворков. По крайней мере, если вы – новичок, то начинать с Zend’а я бы не советовала.

Для тех, кто работает с Eclipse – существует плагин Symfoclipse. А для поклонников NetBeans - радостная новость - поддержка symfony появится в NetBeans 7.0.

Возможно, вы ничего не слышали про symfony, однако за рубежом он довольно популярен. Хотя сейчас уже он набирает обороты и у нас – некоторые харьковские конторы тоже уже работают с symfony. Если вы заглянете сюда, то увидите довольно внушительный (и это далеко не полный) список проектов на symfony – кстати, среди них - Yahoo! Bookmarks.

Ссылки, которые могут вам пригодиться.
http://www.symfony-project.org/ - сайт symfony.
http://symfony.org.ua/ - русскоязычный сайт.
http://trac.symfony-project.org/wiki/Documentation/ru_RU - наиболее полное собрание переводов.
http://www.symfony-project.org/plugins/ - поиск плагинов здесь.
http://symfony.artsofte.ru/ - русскоязычный блог разработчиков symfony.
http://propel.phpdb.org/docs/user_guide/ - документация Propel.
http://habrahabr.ru/blogs/symfony/20814/ - пост на хабре - Symfony: Как начать. + там есть много ссылок.
http://groups.google.com/group/symfony-ru - русскоязычная google-группа.

Комментариев нет: