Блог Vaden Pro

Все о самостоятельном создании и продвижении сайтов

Нововведения Laravel 5.1

Раздел: 

Только что состоялся релиз новой версии Laravel 5.1. Это первый релиз версии с долгосрочной поддержкой. Давайте вкратце пройдемся по основным новшествам версии и узнаем подробности непосредственно от Тэйлора Отвелла в интервью.

Laravel 5.1

Длительное время поддержки (LTS)

Начиная с 2011 года Laravel добросовестно придерживался популярной в среде приложений с открытым исходным кодом мантры "выпускай рано, выпускай часто". Но быстрый рост популярности приложения привел к необходимости сконцентрировать усилия разработчиков на более серьезных целях, к примеру на возможности удовлетворить потребности крупных организаций и важных приложений, которые нуждаются в исправлениях в безопасности, но не могут обновляться слишком часто. Версия 5.1 включает 3 года поддержки исправлений безопасности.

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

Новая документация

Также кардинальным изменениям подверглась документация проекта. Она стала гораздо более ясной, глубокой и плавной с точки зрения подачи информации. Этот проект стал по истине грандиозным. Бесчисленное число часов было потрачено на доведение до ума каждой страницы с информацией. Как сказал Тэйлор, он скорее задержит релиз всего проекта, чем позволит ему состояться с убогой документацией.

Также одним из приятных сюрпризов стало появление в документации поиска в режиме реального времени с автодополнением запросов.

Laravel documentation

Команды

Еще одним большим изменением станет переименование папки «Commands» в «Jobs» с целью придать командам высший приоритет в рабочих очередях. Это изменение папок не повлечет нарушений в совместимости с предыдущими версиями.

PSR-2

App и generators преобразованы в PSR-2. Тем, кто не знаком с данным стандартом стоит ознакомиться с его руководством по стилю кода.

Самое значительное изменение в сравнении с пятой версией Laravel заключается в преобразовании табуляции в пробелы + управляющие структуры теперь будут идти в одну линию.

Упрощен синтаксис Artisan команд

Вплоть до релиза Laravel 5.1 для создания новой Artisan команды необходимо было отдельно задавать не только новые команды, но и определять их опции и аргументы, теперь же ситуация изменилась, и синтаксис создания новых команд был значительно упрощен.

Подробнее о новом синтаксисе

Появилась возможность создания расширенного ввода и вывода данных при помощи Artisan команд

Появился ряд новых функций для ввода и вывода данных в Artisan команды.

Подробнее о расширенном вводе и выводе данных в Artisan

Использование сервисов от Blade

Далее идет возможность использовать сервисы от Blade Template:

@extends('layouts.app')
@inject('stats', 'StatisticsService')
<div>{{ $stats->getCustomerCount() }}</div>

Урок в тему: Вставка объектов (из IOC) при помощи Laravel Blade Service Injection

Запуск локальных SSH скриптов при помощи Envoy

Наконец, и этим можно воспользоваться уже сейчас, Envoy позволит запускать скрипты без SSH. Больше информации можно получить ознакомившись с перечнем доступных запросов. Для получения последней версии просто воспользуйтесь командой:

composer global update

Многие разработчики не использовали локальные задачи с Homestead до этого момента. Но с Envoy многое изменилось.

Промежуточные параметры

Эта новая особенность позволяет Вам передавать параметры в промежуточное программное обеспечение (middleware) К примеру:

class VerifyRole {
   public function handle($request, $next, $role = null) {
      dd($role);
   }
}
 
Route::get('/', ['middleware' => 'role:admin', function () {
   return view('welcome');
}]);

Урок в тему: Передача параметров в промежуточное ПО (middleware) в Laravel 5.1

Трансляция событий

Laravel предлагает первоклассную систему событий. Но что, если бы у нас был элегантный способ трансляции событий в JavaScript? Рассмотрите вещи из разряда web sockets или Pusher интеграции. Что если бы мы могли сделать такие распространенные задачи до смешного простыми? Что же, с новым функционалом мы это можем.

Урок в тему: Трансляция событий при помощи Pusher.com и Socket.io

В обход CSRF

В laravel 5.0 все запросы шли через CSRF middleware. В целом, это отлично подходит для большинства распространенных случаев. Однако, один из подвохов заключался в использовании сервисов с web hooks, где у Вас не было возможности установить маркер. Новый функционал в 5.1 использует VerifyCsrfToken классы, которые позволят этой недоработке быть легко исправленной.

protected $except = [
 'webhook/*'
];

Улучшенное модульное тестирование приложений

С добавлением Laracast-го комплексного пакета для тестирования приложений, этот процесс станет проще чем когда либо прежде.

public function testNewUserRegistration()
{
    $this->visit('/register')
  ->type('Taylor', 'name')
  ->check('terms')
  ->press('Register')
  ->seePageIs('/dashboard');
}

Еще больше интересных подробностей можно узнать из видеоуроков Laracast

Интервью с Тэйлором Отвеллом

Одним из самых больших новшеств в версии 5.1 будет долгосрочная поддержка версии. Можешь сказать как в целом это будет работать?

Это первый релиз Laravel с долгосрочной поддержкой версии. Это означает, что ошибки в новой версии будут исправляться в течение двух лет и помимо этого 3 года будут вноситься исправления связанные с безопасностью. Версии с долгосрочной поддержкой будут выходить каждые 2 года, а это означает, что следующий релиз Laravel с долгосрочной поддержкой состоится в мае 2017-го года. Релиз с долгосрочной поддержкой обеспечит больше спокойствия для развития экспериментальных проектов или же клиентов, которые нуждаются в дальнейшей работе над ошибками в течение нескольких лет.

Вы потратили фантастическое количество времени на создание новой документации. Вы думаете это поможет развиваться адептам Laravel быстрее?

Качественная документация это один из важнейших аспектов любого проекта с открытым кодом. Тем не менее этим нюансом крайне часто пренебрегают или же откладывают его на неопределенный срок после релиза проекта. Если бы я мог дать один совет руководителям проектов, то он бы заключался в том, что не стоит выпускать что-либо без хорошей сопутствующей документации. Я скорее задержу релиз всего проекта, чем допущу чтобы он состоялся с плохой документацией. Я думаю, что улучшенная документация очень сильно поможет людям начинающим осваивать Laravel. Конечно же у меня еще припасено несколько козырей в рукаве и их анонса вы можете ожидать в ближайшее время. Делать Laravel приятным для изучения - одна из моих главных страстей в жизни.

Из всех новых фишек версии 5.1 какую Вы считаете самой лучшей и какую Вы считаете самой важной?

Говоря по правде, нововведение которым я горжусь больше всего это новая документация проекта. Она просто гораздо лучше. Если же говорить о технических моментах, то мне нравится трансляция событий. Это не требует большого количества кода для реализации, крайне удобно и просто в использовании и позволяет быстро приступить к созданию приложений реального времени. Промежуточные параметры являются также существенным дополнением версии 5.1 и фактически были реализованы членами сообщества. Опять таки, это функционал, который не требует много кода для реализации, но облегчит жизнь очень многим разработчикам.

В Laravel 5.1 также вошел PSR-2. Многие жаловались, что это событие должно было произойти раньше. Что Вы думаете по этому поводу?

Внедрение нового стиля кодирования в активно развивающийся проект крайне сложная задача. Конвертация всего проекта в PSR-2 потребовала бы перебазирования всех pull запросов один за одним. Когда я не работал на полную их бывали сотни. Сейчас же, когда я работаю полный рабочий день, там может быть всего 20-30 открытых pull запросов по всей Laravel GitHub организации, которыми значительно легче управлять. И это стало отличной возможностью для внедрения PSR-2 и я был рад запустить простую команду в Sublime Text для форматирования всего кода.

Вы все еще остаетесь верны первоначальным целям, которые ставили перед собой создавая Laravel?

Из всех релизов Laravel в любом случае мой любимый 5.1. Он делает проще и лучше многое из того, что не было реализовано в версии 5.0. Во-первых я думаю, что структура папок станет более интуитивно понятна после переименования “Commands” в “Jobs”, и позволяет нам отойти от сложной “Handlers” структуры папок, к более простой “Listeners” структуре для событий. Трансляция событий является классической чертой Laravel. Для трансляции Ваших событий через Pusher или Redis вы просто добавляете “ShouldBroadcast” к вашему классу событий. Вот и все, я люблю небольшие возможности, которые просты и элегантны. Промежуточные параметры улучшают оригинальное промежуточное обеспечение из Laravel 5.0, делая его таким же мощным, как были маршрутные “filters” в версиях 4-х.

Я уверен, что нависший над Вами релиз версии 5.1 пожирал огромное количество времени, но он уже состоялся. Какие планы на оставшуюся часть года?

Мои ближайшие планы- улучшить несколько Forge особенностей. Я бы хотел сделать AWS поддержку так же как улучшить переменную управления окружающей средой, чтобы добиться большей схожести с Envoyer-ом. Я также работаю над еще парой вещей чтобы сделать изучение Laravel еще удобнее.

Микс из "Everything we know about Laravel 5.1 — Updated" и "Laravel 5.1 is released"