Symfony 2 Joboard : Маршрутизация

Если вы обратите внимание на URL домашней страницы Joboard, то в адресной строке вы увидите: /job/1/show. Наверняка, вы привыкли видеть адреса в формате /job.php?id=1. Так как же Symfony определяет какое действие необходимо выполнить исходя из заданного адреса? Почему переменная $id находится там, где должно указываться действие, а не параметр? Попробуем разобраться.

Читать далее...

Работаем с тегами в Symfony 2

  • PHP
  • 3 года назад

Определённые сервисы ядра Symfony 2 зависят от тегов, по которым определяют: какие сервисы должны быть загружены, быть оповещены о наступлении события либо применены по другому назначению. Например, Twig использует twig.extension для загрузки расширений.

Но теги можно использовать и по своему назначению в собственных бандлах. К примеру, ваш сервис работает с какой-либо коллекцией данных или реализовывает “цепочку” действий, которые выполняются последовательно до наступления положительного результата. В этой статье я приведу пример “транспортной цепочки” - коллекция классов реализующих \Swift_Transport. Используя такую цепочку, Swift mailer (служба отправки электронных писем в Symfony2) использует несколько способов отправки писем, до тех пор пока письмо не будет отправлено. В данной статье уделено основное внимание внедрению зависимостей в проект.

Читать далее...

Symfony 2 Joboard : Контроллёр и Представление

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

  • Страница со списком всех вакансий
  • Страница для создания новой вакансии
  • Страница для редактирования вакансии
  • Возможность удаления вакансии

Хотя текущий код уже готов к использованию, мы всё же переделаем шаблоны, чтобы они больше соответствовали макетам Joboard.

Читать далее...

Symfony 2 Joboard : Модель данных

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

Читать далее...

Использование строки в качестве Twig шаблона в Symfony2

  • PHP
  • 3 года назад

Я переключил свой предпочтительный метод на использование класса Twig_Loader_Chain. Этот метод позволяет назначить несколько загрузчиков в один экземпляр Twig_Environment, так что вы сможете прозрачно обрабатывать шаблоны из файлов или из строк. В нижней части статьи вы увидите описание этого метода.

Для того, чтобы создать twig шаблон требуется экземпляр класса Twig_Environment. Этот класс содержит метод render, который возвращает обработанный результат из twig шаблона (обычно из файла). Twig Environment использует загрузчик классов, который реализует интерфейс Twig_LoaderInterface, этот класс загружает данные из хранилища (файл, база данных) для последующего их анализа шаблонизатором. По умолчанию Symfony2 использует класс Twig_Loader_Filesystem, который загружает данные шаблонов из файлов, для того чтобы создать шаблон из строки нам нужен экземпляр Twig_Environment, который для получения данных, использует класс Twig_Loader_String. Есть несколько способов, как вы можете это сделать, самый простой способ - это создать экземпляр Twig_Environment и и в качестве загрузчика передать ему экземпляр класса Twig_Loader_String (этот код можно поместить внутри вашего контроллера):

Читать далее...

Тестирование веб-приложений с помощью Codeception

  • PHP
  • 3 года назад

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

Читать далее...

Тестирование Symfony 2 приложений с помощью codeception

  • PHP
  • 3 года назад

Какие преимущества вы получаете, используя Codeception с Symfony2? Давайте перечислим все из них:

  • удобный синтаксис для функциональных тестов
  • доступ к контейнеру в юнит-тестах
  • тестирования REST и SOAP сервисов, созданных с помощью Symfony
  • быстрая очистка данных при использовании Doctrine2

Установка очень проста. Вы можете использовать Composer (как вы обычно это делаете), но мы рекомендуем попробовать phar package. В этом случае вы можете избежать ненужных зависимостей. Но оба варианта равнозначны. Чтобы установить codeception через composer необходимо добавить в composer.json следующий код, а затем обновить:

Читать далее...

Несколько простых способов увеличить производительность PHP

  • PHP
  • 3 года назад

Чтобы сделать сайт более производительным необходимо подключить множество дополнительных слоёв. От создания обратного-прокси кеша с Varnish до конфигурирования группы балансировщиков нагрузки. И для этого есть много хорошо документированных вариантов.

Но, что делать если вы только начинаете? Что делать если у вас небольшое приложение? Что вы можете сделать прямо сейчас, чтобы сразу почувствовать разницу в производительности?

Читать далее...