Использование  Symfony Башкеев Алексей
CMS и Фреймворки CMS позволяет настроить и кастомизировать стандартное решение («обработка напильником») Фреймворк позволяет сделать любое решение из небольших компонент («конструктор Lego») Наиболее эффективная область применения фреймворков: Решение нетиповых задач, когда модулем к CMS не обойтись. Создание сложных, нестандартных решений.
Выбор Фреймворка для проекта Ускорение разработки. Небольшие накладные расходы. Наличие актуальной документации.  Возможности для масштабирования с ростом проекта.  Наличие средств автоматизированного тестирования. Должен быть безопасен в использовании. Обратная совместимость.
Выбор  OpenSource  Фрейморка Проект должен быть "жив" (выходят новые версии, исправляются баги, актуализируется документация). Наличие ресурсов у проекта для собственного развития. Наличие развитого сообщества (получение консультаций по возникающим вопросам). О тсутствие зависимостей от сторонних компонент, не удовлетворяющих этим требованиям.
Немного о Symfony Первая версия появилась в октябре 2005г.  Спонсируется компанией Sensio ( http:// www.sensio.com / ) Последняя версия 1.0.13 вышла 1 апреля 2008. Версия 1.1. в стадии бета-тестирования. Есть своя книга с документацией, которую можно купить на amazon.com. Комьюнити насчитывает более 5 000 пользователей. Есть крупные завершенные проекты: Yahoo! Bookmarks W3Counter ( http://www.w3counter.com ) Еще несколько сотен на сайте http://trac.symfony-project.com/wiki/ApplicationsDevelopedWithSymfony
Архитектура Symfony Первая стабильная версия вышла на PHP5 (PHP4 изначально не поддерживался).  За основу было взята конепция MVC от Mojavi3-DEV ( http:// www.mojavi.org / ) Routing и работа с шаблонами - от Ruby on Rails  ( http:// www.rubyonrails.com / ) В качестве слоя абстракции от БД Propel ( http:// propel.phpdb.org / trac / ) Многоязычность - Prado ( http:// www.xisc.com / ) Встроенные JavaScript компоненты (Prototype, script.aculo.us, TinyMCE, Dynarch.com). Практический любой сторонний компонент  Symfony  можно заменить ,  установив соответствующий плагин с помощью команды  symfony plugin-install
Быстрая  разработка Простота установки, настройки и обновлений (установка на новом сервере в 2 команды). Удобство работы для разработчика  ( командная строка –  symfony …  ) .  Кодогенераторы. Встроенные средства для отладки  (debug- панель). Модульность: возможность создавать повторно используемые компоненты Возможность использовать последние достижения в области пользовательских интерфейсов (AJAX и т.д.) Удобная миграция изменений на промышленные сервера, переход более новым версиям  Symfony  ( symfony sync ,  symfony upgrade ) .
Документация и поддержка Флеш-ролики и туториалы и пошаговые инструкции на официальном сайте ( http ://www.symfony-project.org/ ) Книга в магазине  www. amazon.com  "The Definitive Guide to symfony« (более 400 страниц). Документация актуализируется непрерывно. Есть своя команда по разработке и поддержке документации. Документация на сайте в wiki от сообщества разработчиков  Symfony . Развитое комьюнити: Форум, Google Groups, блоги, IRC, плагины и примеры кода от сообщества разработчиков  Symfony .
Возможности для масштабирования Многоуровневое кешировние: Целых HTML-старниц (sfSuperCache); Внутренней части страницы с/без обрамления (Аction’ов); Отдельных частей страниц (Component’ов). Оптимизация разработанного кода (sfOptimizerPlugin)  symfony optimize  Оптимизация доступа к БД  ( без  ORM,  sfPropelLoadbalancerPlugin) . Кеширование вызовов функций (sfFunctionCache). Стандартная оптимизация PHP: (eAccelerator, APC, XCache и т.д.) (sfProcessCache) .
Автоматизированное тестирование Unit-тесты на базе встроенного средства Lime Testing Framework   symfony test-unit Функциональное автоматизированное тестирование с помощью встроенных средств  Symfony (sfTestBrowser ,  sfDomCssSelector)   symfony test-functional Все тесты обычно выполняются на тестовой базе данных (готовим тестовые данные из файлов с помощью  sfPropelData ). Для приемочного тестирования используется  Selenium ( тестовые случаи пишутся на  HTML , запускаются браузером ) , в написании тестов помогает  Selenium IDE  ( Firefox Selenium Extension ) .
Пример проекта :  начало Создание БД и ORM-классов для работы с ней. Берем и рисуем структуру БД в каком-либо средстве автоматизированного проектирования. Создаем с помощью этого средства DDL для компонент БД (DDL.sql) Создаем базу, запускаем DDL.sql - получаем базу с таблицами, индексами, внешними ключами. Запускаем  symfony propel-build-schema  - получаем XML (YAML) описание структуры БД (абстрактно от БД). Если нужно правим schema.yml, запускаем  symfony propel-build-model  - получаем готовый набор PHP-классов, готовый к использованию При изменении структуры БД повторяем шаги 4-6, написанный нами код не страдает, т.к. он наследует сгенерированные классы.
Пример проекта: продолжение Доработка модели Классы, создаваемые разработчиками, наследуют классы  ORM  и по сути являются абстрактными от конкретной СУБД. При необходимости можно для ускорения разработки использовать «чистый  SQL ». Создание модулей Обычные модули. Генерируемые модули на основе таблиц. Генерируемые модули, основанные на представлениях. Создание шаблонов Создание  layout’ ов (обрамлений страниц). Создание конечных представлений страниц ( Components, templates, slots);
Пример проекта: завершение Завершение разработки Создание красивых  URL’ ов. Проработка визуальных эффектов. Оптимизация, добавление кэширования. Покрытие тестами Создание модульных и функциональных тестов Создание приемочных тестов на базе  Selenium
Спасибо за внимание! Если есть вопросы – пишите на  [email_address]

Использование Symfony

  • 1.
    Использование SymfonyБашкеев Алексей
  • 2.
    CMS и ФреймворкиCMS позволяет настроить и кастомизировать стандартное решение («обработка напильником») Фреймворк позволяет сделать любое решение из небольших компонент («конструктор Lego») Наиболее эффективная область применения фреймворков: Решение нетиповых задач, когда модулем к CMS не обойтись. Создание сложных, нестандартных решений.
  • 3.
    Выбор Фреймворка дляпроекта Ускорение разработки. Небольшие накладные расходы. Наличие актуальной документации. Возможности для масштабирования с ростом проекта. Наличие средств автоматизированного тестирования. Должен быть безопасен в использовании. Обратная совместимость.
  • 4.
    Выбор OpenSource Фрейморка Проект должен быть "жив" (выходят новые версии, исправляются баги, актуализируется документация). Наличие ресурсов у проекта для собственного развития. Наличие развитого сообщества (получение консультаций по возникающим вопросам). О тсутствие зависимостей от сторонних компонент, не удовлетворяющих этим требованиям.
  • 5.
    Немного о SymfonyПервая версия появилась в октябре 2005г. Спонсируется компанией Sensio ( http:// www.sensio.com / ) Последняя версия 1.0.13 вышла 1 апреля 2008. Версия 1.1. в стадии бета-тестирования. Есть своя книга с документацией, которую можно купить на amazon.com. Комьюнити насчитывает более 5 000 пользователей. Есть крупные завершенные проекты: Yahoo! Bookmarks W3Counter ( http://www.w3counter.com ) Еще несколько сотен на сайте http://trac.symfony-project.com/wiki/ApplicationsDevelopedWithSymfony
  • 6.
    Архитектура Symfony Перваястабильная версия вышла на PHP5 (PHP4 изначально не поддерживался). За основу было взята конепция MVC от Mojavi3-DEV ( http:// www.mojavi.org / ) Routing и работа с шаблонами - от Ruby on Rails ( http:// www.rubyonrails.com / ) В качестве слоя абстракции от БД Propel ( http:// propel.phpdb.org / trac / ) Многоязычность - Prado ( http:// www.xisc.com / ) Встроенные JavaScript компоненты (Prototype, script.aculo.us, TinyMCE, Dynarch.com). Практический любой сторонний компонент Symfony можно заменить , установив соответствующий плагин с помощью команды symfony plugin-install
  • 7.
    Быстрая разработкаПростота установки, настройки и обновлений (установка на новом сервере в 2 команды). Удобство работы для разработчика ( командная строка – symfony … ) . Кодогенераторы. Встроенные средства для отладки (debug- панель). Модульность: возможность создавать повторно используемые компоненты Возможность использовать последние достижения в области пользовательских интерфейсов (AJAX и т.д.) Удобная миграция изменений на промышленные сервера, переход более новым версиям Symfony ( symfony sync , symfony upgrade ) .
  • 8.
    Документация и поддержкаФлеш-ролики и туториалы и пошаговые инструкции на официальном сайте ( http ://www.symfony-project.org/ ) Книга в магазине www. amazon.com "The Definitive Guide to symfony« (более 400 страниц). Документация актуализируется непрерывно. Есть своя команда по разработке и поддержке документации. Документация на сайте в wiki от сообщества разработчиков Symfony . Развитое комьюнити: Форум, Google Groups, блоги, IRC, плагины и примеры кода от сообщества разработчиков Symfony .
  • 9.
    Возможности для масштабированияМногоуровневое кешировние: Целых HTML-старниц (sfSuperCache); Внутренней части страницы с/без обрамления (Аction’ов); Отдельных частей страниц (Component’ов). Оптимизация разработанного кода (sfOptimizerPlugin) symfony optimize Оптимизация доступа к БД ( без ORM, sfPropelLoadbalancerPlugin) . Кеширование вызовов функций (sfFunctionCache). Стандартная оптимизация PHP: (eAccelerator, APC, XCache и т.д.) (sfProcessCache) .
  • 10.
    Автоматизированное тестирование Unit-тестына базе встроенного средства Lime Testing Framework symfony test-unit Функциональное автоматизированное тестирование с помощью встроенных средств Symfony (sfTestBrowser , sfDomCssSelector) symfony test-functional Все тесты обычно выполняются на тестовой базе данных (готовим тестовые данные из файлов с помощью sfPropelData ). Для приемочного тестирования используется Selenium ( тестовые случаи пишутся на HTML , запускаются браузером ) , в написании тестов помогает Selenium IDE ( Firefox Selenium Extension ) .
  • 11.
    Пример проекта : начало Создание БД и ORM-классов для работы с ней. Берем и рисуем структуру БД в каком-либо средстве автоматизированного проектирования. Создаем с помощью этого средства DDL для компонент БД (DDL.sql) Создаем базу, запускаем DDL.sql - получаем базу с таблицами, индексами, внешними ключами. Запускаем symfony propel-build-schema - получаем XML (YAML) описание структуры БД (абстрактно от БД). Если нужно правим schema.yml, запускаем symfony propel-build-model - получаем готовый набор PHP-классов, готовый к использованию При изменении структуры БД повторяем шаги 4-6, написанный нами код не страдает, т.к. он наследует сгенерированные классы.
  • 12.
    Пример проекта: продолжениеДоработка модели Классы, создаваемые разработчиками, наследуют классы ORM и по сути являются абстрактными от конкретной СУБД. При необходимости можно для ускорения разработки использовать «чистый SQL ». Создание модулей Обычные модули. Генерируемые модули на основе таблиц. Генерируемые модули, основанные на представлениях. Создание шаблонов Создание layout’ ов (обрамлений страниц). Создание конечных представлений страниц ( Components, templates, slots);
  • 13.
    Пример проекта: завершениеЗавершение разработки Создание красивых URL’ ов. Проработка визуальных эффектов. Оптимизация, добавление кэширования. Покрытие тестами Создание модульных и функциональных тестов Создание приемочных тестов на базе Selenium
  • 14.
    Спасибо за внимание!Если есть вопросы – пишите на [email_address]