Новое в Symfony 2.7: Повышение производительности

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

Добавлена ссылка на метод getParameter() в базовый контроллер

Получение значения параметра контейнера внутри контроллера является одним из наиболее распространенных затруднений, в процессе обучения Symfony. Как правило, вначале пытаются безуспешно использовать метод get(), а затем пытаются использовать несуществующий метод getParameter(). К счастью, в Symfony 2.7 будет добавлена ссылка на метод getParameter():

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller
{
    public function indexAction()
    {
        // Symfony 2.6
        $value = $this->container->getParameter('param_name');

        // Symfony 2.7
        $value = $this->getParameter('param_name');

        // ...
    }
}

Добавлен индикатор статуса версии Symfony 

Кто захочет работать с устаревшей версией Symfony, если с каждой новой версией, становятся доступными все больше новых, полезных фич? К счастью, начиная с Symfony 2.7, будет сложнее запустить устаревшую версию.Причина в том, что панель отладки будет включать в себя визуальный индикатор статуса вашей версии Symfony:

16600815414_50ea65e5c7_o

Отображение статуса HTTP запроса в результатах поиска в профайлере

Часто тяжело найти информацию по конкретному запросу в списке запросов в профайлере Symfony. В Symfony 2.7 это задача упрощается благодаря новой колонки, который отображает HTTP статус каждого запроса.

17015876907_d5bdbdf4cc_o

Пожалуйста, обратите внимание, что если вы храните информацию о профиле в базе данных типа MySQL или SQLite, необходимо удалить существующую таблицу или добавить новый столбец status_code вручную.

Добавлена поддержка параметров контейнера в правилах роутинга

В Symfony 2.7, правила роутинга теперь поддерживает использование параметров контейнера на своих выражениях. Просто оберните названия параметров со символами % и Symfony будет заменять их значениями перед вычислением выражения:

# app/config/routing.yml
contact:
    path:     /contact
    defaults: { _controller: AcmeDemoBundle:Main:contact }
    condition: "request.headers.get('User-Agent') matches '%allowed_user_agents%'"

Пожалуйста, обратите внимание, что это изменение вводит небольшую путаницу в некоторых особых случаях. Если ваше выражение использует оператора следующего вида: foo%bar%2, то Symfony 2.6 будет анализировать его как $foo % $bar % 2 , а Symfony 2.7 заменит %bar% значением параметра bar или вернет ошибку если такой параметр не существует.

Перемещены команды lint в пространство имен lint:

В прошлом мы перенесли все Symfony команды отладки в пространство имён debug, чтобы лучше сгруппировать команды по функционалу. Symfony 2.7 сделано то же самое с командами lint, используемыми для обнаружения ошибок синтаксиса в YAML-файлах и шаблонах Twig:

# Symfony 2.6
$ php app/console yaml:lint ...
$ php app/console twig:lint ...

# Symfony 2.7 (the old command names also work)
$ php app/console lint:yaml ...
$ php app/console lint:twig ...

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

Добавить поддержку для включения нескольких шаблонов Twig

В Symfony 2.7 вы можете передать любое количество файлов и/или каталогов lint:twig команду:

# Symfony 2.6 (one template or one directory)
$ php app/console lint:twig app/Resources/views/base.html.twig
  1/1 valid files

$ php app/console lint:twig app/Resources/views/blog/
  4/4 valid files

# Symfony 2.7 (any number of files and/or directories)
$ php app/console lint:twig app/Resources/views/base.html.twig app/Resources/views/blog/
  5/5 valid files

Автоматическая перезагрузка встроенного веб-сервера

Использование встроенного PHP веб-сервера, довольно частая практика при разработке приложений. Вы, вероятно, используете команду server:run доступную с версии Symfony 2.2. Однако, начиная с Symfony 2.6 вы также можете использовать команды server:start, server:status и server:stop.

Единственным недостатком является то, что команда server:start требует расширения pcntl для запуска. В Symfony 2.7, если вы выполняете server:start, и у вас не установлено расширение pcntl, Symfony будет автоматически выполнять команду server:run .

 

Источник http://symfony.com/blog/new-in-symfony-2-7-productivity-improvements

Добавить комментарий

Ваш адрес email не будет опубликован.

11 + 1 =