Caution: You are browsing the legacy symfony 1.x part of this website.

День 23: Другой взгляд на Symfony

1.4 / Doctrine
Symfony version
1.2
Language ORM

Сегодня последняя остановка в нашем путешествии по удивительному миру Symfony. На протяжении этих двадцати трех дней, Вы изучали Symfony по примерам: начиная от шаблонов проектирования используемых этим фреймворком и заканчивая мощными встроеными возможностями. Вы пока не стали "мастером", но у Вас уже есть все необходимые знания для того, чтобы с полной уверенностью начать разработку Вашего приложения.

Мы завершаем цикл наших уроков, но давайте взглянем ещё раз на этот фреймворк. Забудьте на час о самом сайте Jobeet, и вспомните все те возможности которые Вы изучили за последние три недели.

Фреймворк Symfony - что это?

Фреймворк Symfony, это набор отдельных подфреймворков, который образует полноценный MVC framework (Модель, Вид, Контроллер).

Перед тем, как начать писать код, уделите немного времени прочтению истории и философии Symfony. Затем проверьте требования фреймворка и воспользуйтесь скриптом check_configuration.php для проверки настроек.

Ну и наконец - установите Symfony. Через некоторое время Вы возможно захотите обновить Symfony до последней версии.

Этот фреймворк также предоставляет инструменты для упрощения развертывания приложения.

Модель

Часть Symfony для работы с моделями может быть реализована с помощью Doctrine ORM. На основе описания базы данных, оно генерирует классы для объектов, форм, и фильтров. Doctrine также генерирует SQL код, используемый для создания таблиц в базе данных.

Конфигурирование базы данных может быть сделано с помощью задачи или изменения конфигурационного файла. Помимо конфигурации, также возможно вставить начальные данные в базу, благодаря файлам с начальнымм данными (fixtures). Вы даже можете сделать эти файлы динамическими.

Объекты Doctrine могут быть с легкостью интернационализированны.

Представление

По умолчанию, слой представления архитектуры MVC использует обычные PHP файлы в качестве шаблонов.

В шаблонах могут использоваться помощники(#chapter_04_the_stylesheets_images_and_javascripts) для повторяющихся задач, таких как создание URL или ссылок.

Шаблон может быть "декорирован" файлом layout для отделения заголовка и подвала (footer) страниц. Для того чтобы шаблоны были более универсальными, Вы можете использовать слоты, фрагменты и компоненты.

Для ускорения работы приложения, Вы можете использовать подфреймворк кэширования для кэширования целой страницы, только [действия] (#chapter_21_action_cache), или даже фрагментов или компонентов. Вы также можете [удалить кэш вручную] (#chapter_21_removing_the_cache_cache_removal).

Контроллеры

Часть Symfony, отвечающая за контроллеры и действия.

Задачи могут быть использованы для создания простых модулей, CRUD модулей, или даже для создания полностью рабочих модулей админки для моделей.

Модули админки позволяют Вам построить полностью рабочее приложение без написания какого-либо кода.

Для абстрагирования от технической реализации сайта, Symfony использует маршрутизацию, подфреймворк, который генерирует красивые URL. Для реализации веб сервисов, Symfony поддерживает различные форматы. Также Вы можете создавать свои форматы.

Действие может включать другое действие (forward), или быть перенаправлено (redirect).

Конфигурация

В Symfony, достаточно просто иметь различные конфигурационные настройки для различных окружений приложения. Окружение - это набор настроек, которые устанавливают различные "поведения" на промышленном сервере или на сервере для разработки. Вы также можете создать новое окружение.

Конфигурационные файлы могут быть определены на различных уровнях и многие из них осведомлены об окружении:

В основном конфигурационные файлы используют формат YAML.

Instead of using the default directory structure and organize your application files by layers, you can also organize them by feature, and bundle them in a plugin. Speaking of the default directory structure, you can also customize it according to your needs.

Вместо того, чтобы использовать структуру директорий по умолчанию, Вы можете также их организовать по функциональности и объединить в плагин Говоря о структуре директорий по умолчанию, Вы всегда её можете изменить в соответствии с вашими нуждами.

Отладка

С помощью записи действий в журнал(log), отладочной веб панели и информативных исключений, Symfony предоставляет большой набор полезных инструментов для помощи разработчику в быстрой отладке кода.

Основные объекты Symfony

Фреймворк Symfony предоставляет несколько основных объектов, которые абстрагируют повторяющиеся задачи в веб проектах: запрос (request), ответ (response), пользователь (user), запись в журнал (logging), маршрутизация (routing), email-клиент (mailer), и управление кэшированием представлений (view).

Эти объекты управляются объектом sfContext и они настроены с помощью factories.

Объект "пользователь" управляет аутентификацией, авторизацией, мгновенными сообщениями, и атрибутами, которые хранятся в сессии.

Безопасность

Фреймворк Symfony содержит встроенные методы защиты против XSS и CSRF атак. Эти настройки могут быть изменены из командной строки, или в конфигурационном файле configuration file.

Подфреймворк форм также предоставляет встроенные методы защиты.

Формы

Поскольку работа с формами - это одна из самых утомительных работ для разработчика, Symfony предоставляет подфреймворк форм. Фреймворк форм поставляется с большим количеством виджетов и валидаторов. Одним из достоинств подфреймворка форм является тот факт, что шаблоны очень легко настраиваются.

Если Вы используете Doctrine, фреймворк форм, также сделает проще генерацию форм и фильтров на основе ваших моделей.

Интернационализация и Локализация

Интернационализация и локализация поддерживаются в Symfony благодаря стандарту ICU. "Локаль пользователя" определяет язык и страну пользователя. Она может быть определена самим пользователем, или быть встроенной в URL.

Тесты

Библиотека lime, используемая для модульных тестов, предоставляет большое количество методов тестирования. Объекты Doctrine также могут быть тестированны при помощи выделенной базы данных с использованием выделенных начальных данных.

Модульные тесты могут быть запущены либо по-одному, либо все сразу.

Функциональные тесты пишутся с использованием класса sfFunctionalTest, который использует эмулятор браузера и позволяет выполнять интроспекцию основных объектов Symfony при помощи тестеров. Существуют тестеры для запроса, ответа, пользователя, текущей формы, слоя кэша и Doctrine объектов.

Вы тааже можете использовать средства отладки для ответа и форм.

Также, как и модульные тесты, функциональные тесты могут запускаться по-одному или все вместе.

Такж Вы можете запустить все тесты сразу.

Плагины

Symfony предоставляет только фундамент для Вашего веб-приложения, и опирается на плагины, когда дело касается добавления дополнительных возможностей. В этом учебнике, мы говорили о sfGuardPlugin, sfFormExtraPlugin и sfTaskExtraPlugin.

Плагин должен быть активирован после установки.

Плагин - это лучший способ внести свой вклад в проект Symfony.

Задачи

Интерфейс командной строки Symfony (CLI) предоставляет много задач (tasks), и самые полезные из них, мы обсуждали в наших уроках.

Вы также можете создавать свои собственные задачи.

До скорого!

Обучение на практике

Symfony также, как и любое программное обеспечение, имеет кривую обучения. В процессе обучения первый шаг - изучение на практических примерах при помощи такой книги, как эта. Второй шаг - это практика. Ничто и никогда не заменит практику.

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

Используйте любой доступный материал, чтобы узнать больше о Symfony.

Сообщество

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