Internals (RUS)



Похоже, Вы хотите разобраться в том, как работает Symfony2 и каким образом можно расширить его возможности. Если так, то это здорово! Данный раздел содержит подробное объяснение внутренних свойств Symfony2.

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

Обзор

Код Symfony2 состоит из нескольких независимых, расположенных один над другим, слоёв.

Фреймворк не управляет автозагрузкой напрямую. Она выполняется независимо, с помощью класса UniversalClassLoader и файла src/autoload.php. Более подробную информацию можно получить из соответствующей главы.

Читать далее



The Symfony2 Stable API (RUS)



Стабильный API Symfony2 представляет собой подмножество всех общедоступных функций, издаваемых Symfony2 (компоненты и основные пакеты ядра) и которым присущи следующие общие свойства:

  • Пространство имён и имя класса останутся неизменными;
  • Название функции останется неизменным;
  • Сигнатура функции (аргументы и тип возвращаемого значения) останутся неизменными;
  • Предназначение функции изменяться не будет.
  • Однако, сам процесс реализации может изменяться. Единственным основанием для внесения изменений в стабильный API может служить устранение пробелов в системе безопасности.

    Основой стабильному API служит рекомендательный список (whitelist), помеченный тэгом @api. По этой причине, всё, что не помечено этим тэгом, не является частью стабильного API.

    Любой внешний пакет также должен сопровождаться собственным стабильным API.

    Что же касается Symfony 2.0, следующие компоненты имеют общедоступный API, снабжённый необходимым тэгом:

  • BrowserKit
  • ClassLoader
  • Console
  • CssSelector
  • DependencyInjection
  • DomCrawler
  • EventDispatcher
  • Finder
  • HttpFoundation
  • HttpKernel
  • Locale
  • Process
  • Routing
  • Templating
  • Translation
  • Validator
  • Yaml


  • Performance (RUS)



    Производительность Symfony2 изначально отличается скоростью. Естественно, в случае необходимости можно увеличить быстродействие Symfony. Для этого существует много способов. В данной главе Вы познакомитесь с множеством наиболее распространённых и действенных из них.

    Используйте кэширование байт-кода (например, APC)

    Лучший (и самый простой) способ улучшить производительность – использовать кэширование байт-кода. Суть его заключается в устранении необходимости повторного компилирования исходного PHP-кода. Существует несколько байт-код кэшей, а некоторые из них доступны для свободного использования. Наиболее часто используемый тип – это, вероятно, APC.

    Читать далее



    Validation (RUS)



    Валидация – довольно обычная задача в веб-приложении. После введения данных в формы возникает необходимость в проверке этих данных. Их также необходимо проверять перед занесением в базу данных или веб-сервис.
    Читать далее



    Testing (RUS)



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

    Фреймворк для тестирования PHPUnit

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

    Читать далее



    Installing and Configuring Symfony (RUS)



    Цель данной главы заключается в предоставлении рабочего приложения, созданного с помощью Symfony. К счастью, Symfony предлагает “дистрибутивы”, представляющие собой действующие “стартовые” проекты Symfony, которые Вы можете скачать и немедленно начать их разработку.

    Если Вам нужны инструкции по созданию нового проекта и его сохранению с помощью системы контроля версий, читайте «Использование системы контроля версий».

    Читать далее



    Creating and using Templates (RUS)



    Как Вы уже знаете, контроллер отвечает за обработку каждого запроса, входящего в приложение Symfony2. В действительности, контроллер распределяет большую часть тяжёлой работы по различным локациям, чтобы сделать код тестируемым и обеспечить его повторное использование. Когда контроллеру необходимо генерировать HTML, CSS или другое содержимое, он подключает к работе “движок” шаблонов. В этой главе Вы узнаете, как написать действенные шаблоны, которые можно использовать для выдачи содержимого пользователю, заполнять электронные сообщения и т.д. Вы познакомитесь с сокращениями, разумным способом расширения шаблонов, а также узнаете, как можно повторно использовать код шаблонов.

    Читать далее



    Routing (RUS)



    Красивые URL абсолютно необходимы для любого серьёзного веб-приложения. Это значит, что пора оставить “убожества” вроде index.php?article_id=57 ради того, что походит на /read/intro-to-symfony.

     

    Гибкость имеет ещё большую важность. Что, если Вам потребуется сменить URL страницы с /blog на /news? Какое количество ссылок Вам необходимо отследить и обновить для выполнения замены? Если Вы используете маршрутизатор от Symfony, выполнение замены труда не составит.

    Читать далее



    Controller (RUS) Symfony2



    Контроллер – это созданная Вами PHP-функция, которая берёт информацию из HTTP-запроса и на её основании составляет и выдаёт HTTP-ответ (в виде Symfony2 объекта Response ). Ответом может быть HTML-страница, XML-документ, преобразованный в последовательную форму JSON-массив, изображение, переадресовывание на другой ресурс, ошибка 404 и т.п. Контроллер содержит любую произвольную логику, какая только может понадобиться в Вашем приложении для визуализации содержимого страницы.

    Читать далее



    Creating Pages in Symfony2 (RUS)



    Создание новой страницы в Symfony2 представляет собой простой процесс, состоящий из двух этапов:
     

  • Создание маршрута: Маршрут определяет URL (например, /about) для Вашей страницы и определяет контроллер (который является PHP-функцией), который Symfony2 будет выполнять в том случае, когда URL входящего запроса будет соответствовать схеме маршрута;
  •  

  • Создание контроллера: Контроллер представляет собой PHP-функцию, принимающую входящий запрос и трансформирующую его в Symfony2 объект Response, который, в свою очередь, будет выдан пользователю.
  •  
    Такой простой подход великолепен, поскольку соответствует принципу работы веба. Каждое взаимодействие в сети инициируется HTTP-запросом. Вашему приложению остаётся только интерпретировать запрос и выдать подходящий HTTP-ответ.

    Читать далее