Может войдёшь?
Черновики Написать статью Профиль

Laravel 5

перевод

  1. 1. Структура каталогов Laravel 5
  2. 2. Изменения Blade
  3. 3. Контракты
  4. 4. Команды и события
  5. 5. Фасады и вспомогательные методы
  6. 6. Маршруты
  7. 7. Внедрение метода контроллера
  8. 8. Скаффолдинг авторизации
  9. 9. Socialite
  10. 10. Flysystem
  11. 11. dotenv — определение среды
  12. 12. Запросы формы
  13. 13. Laravel Elixir
  14. 14. Laravel Scheduler
  15. 15. Новое поведение PHPdd()
  16. 16. Изменение атрибутов Eloquent
  17. 17. Whoops больше не нужен
  18. 18. Пакеты и Workbench
  19. 19. Psysh
  20. 20. SuperClosure
  21. 21. Новые генераторы
  22. 22. Обновление
  23. 23. Куда идти дальше?

Ещё в сентябре Тейлор Отвелл объявил, что Laravel 4.3 будет переименован в Laravel 5, чтобы отразить изменения каталогов и «другие интересные новшества». После этого не прекращается волнение вокруг Laravel 5, а «другие интересные новшества» превратились в почти два десятка новых функций, которые помогут разработчикам быть более продуктивными.

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

Но скоро всё это закончится, потому что Laravel только что объявил, что на следующей неделе официально выйдет Laravel 5.

#L5. На следующей неделе.
@laravelphp

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

Laravel 5 — значительное обновление с большим количеством новых фишек, но в то же время в нём сохраняется то, что сделало Laravel невероятно успешным.

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

Структура каталогов Laravel 5

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

То, что находится внутри приложения, теперь разбито на следующие папки:

  • Commands (Команды)
  • Console (Консоль)
  • Events (События)
  • Exceptions (Исключения)
  • Handlers (Обработчики)
  • Http
  • Providers (Поставщики услуг)
  • Services (Услуги)

Если вы привыкли к предыдущим версиям Laravel, то это может застать вас врасплох. Но уверяю вас, примерно через два дня использования всё станет ясным и простым. Для получения дополнительной информации прочитайте эту статью Мэтта Штоффера.

Изменения Blade

В Blade сделано не так много изменений, но одно из них довольно существенно.

В Laravel 4 Blade включал два следующих стиля: PHP{{ и PHP{{{. Двойные фигурные скобки служили для вывода сырой информации, а тройные — для экранирования.

Теперь и двойные и тройные фигурные скобки экранируют переменную, а для сырого вывода служит новый стиль {!! $var !!}.

Типичный пример использования сырого вывода — вспомогательные методы формы:

{!! Form::open() !!}

Контракты

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

Команды и события

Команды и события были переделаны. Эти функции подробно описаны как в документации, так и в следующих материалах:

Фасады и вспомогательные методы

Фасады по-прежнему есть в Laravel 5, но новые вспомогательные функции начинают замещать некоторые из наиболее распространённых элементов. Например, в Laravel 4 для отрисовки представления использовался такой код:

PHP
View::make('path.to.view');

Теперь это простой вызов функции:

PHP
view('path.to.view');

Вот ещё несколько:

  • PHPabort()
  • PHPaction()
  • PHPapp()
  • PHPapp_path()
  • PHPasset()
  • маршрутизация – PHPget(), PHPdelete(), PHPput()
  • PHPback()
  • PHPredirect()
  • PHPresponse()
  • и многие другие…

Маршруты

В маршрутах две новые функции. Кэширование маршрутов и промежуточное ПО.

Мэтт проделал отличную работу, описав обе эти функции так, что мне просто нечего добавить. Прочитайте его статьи, чтобы разобраться в этом глубже.

Внедрение метода контроллера

Laravel 4 поддерживал внедрение конструктора контроллера. Разработчики пошли дальше, и теперь вы можете использовать любые зависимости на основе подсказок типов в ваших методах:

PHP
public function store(Request $request)

или вообще что угодно:

PHP
public function taxes(TaxCalculator $tax)

Вот ссылки для более глубокого изучения:

Скаффолдинг авторизации

Процесс авторизации по умолчанию предварительно настроен и готов к использованию. Вникнуть во всё это теперь легче, чем когда-либо.

Появилось два новых типажа (trait):

  • AuthenticatesAndRegistersUsers
  • ResetsPasswords

Прелесть в том, что вы можете использовать имеющиеся или переопределить любые методы типажей, чтобы настроить их под своё приложение.

Socialite

Socialite — необязательный пакет Laravel 5.0, который упрощает работу с OAuth. Все мы его ненавидим, правда? В данный момент Socialite поддерживает работу с Facebook, Twitter, Google и GitHub.

В официальной документации более подробная информация о реализации и принципе работы пакета.

Flysystem

Следующее замечательное новшество — включение в состав фреймворка пакета Flysystem от Фрэнка де Джонга. Если вы не знакомы с этим пакетом, я расскажу. Это абстракция файловой системы, которая позволяет вам легко подменять локальную ФС на удалённую.

Сейчас имеются следующие адаптеры:

  • Local
  • Amazon Web Services – S3
  • Rackspace Cloud Files
  • Dropbox
  • Copy
  • Ftp
  • Sftp (через phpseclib)
  • Zip (через ZipArchive)
  • WebDAV (через SabreDAV)
  • Azure Blob Storage
  • NullAdapter

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

dotenv — определение среды

Ванс Лукас создал PHP-пакет PHP dotenv, который автомагически загружает переменные среды из .env в PHPgetenv(), PHP$_ENV и PHP$_SERVER.

Этот пакет встроен в Laravel 5, чтобы значительно упростить управление средами. Больше не надо редактировать bootstrap/start.php и настраивать массив $app->detectEnvironment().

Вместо этого вы создаёте собственный файл .env, и легко можете настраивать его под свои нужды. А затем в любом файле настроек вы можете использовать что-то подобное:

PHP
'database' => env('DB_DATABASE’, 'myproddb'),

Вы также можете создать дополнительные файлы для различных сред, например для тестирования. Кстати у Laracasts уже есть пример интеграции behat, в котором это уже используется.

Запросы формы

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

В целом авторизация и проверка ввода могут быть превращены в FormRequests и легко внедрены.

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

Laravel Elixir

Elixir — это новая обёртка для gulp, упрощающая работу с активами. Вместо того, чтобы стараться создать собственную систему для создания css и js-файлов, вы можете использовать Elixir и легко запускать ваше приложение.

Прямо из коробки Elixir обрабатывает 90% всего, что вам необходимо: sass, less, coffeescript, JavaScript, версионность файлов и многое другое.

Laravel Scheduler

Laravel Scheduler (планировщик) создан для упрощения задач, которые необходимо запускать через CRON. Надо только настроить одно cron-задание, которое вызывает shartisan schedule:run, и запланировать его выполнение на каждую минуту.

После настройки cron вы можете планировать запуск любых задач в краткой и дружелюбной форме. Это устраняет неприятную необходимость запоминания планирования в cron, и это действительно очень просто. Эти планирования созданы в вашей папке app/Console/Commands.

Вот пример задачи:

PHP
$schedule->command('cache:clear')
     ->
hourly()
     ->
sendOutputTo($filePath)
     ->
emailOutputTo('john@doe.com');

Анонс этой функции был встречен множеством смешанных реакций. Я из тех, кто считает её прекрасной. Мне нравится, что cron-задачи разделены по версиям, легко просматриваются в моём редакторе, и, кроме всего прочего, написаны на чистом английском.

PHP
$schedule->call('SomeClass@method')->dailyAt('10:00');

Новое поведение PHPdd()

Серьёзно обновилась всеми любимая функция PHPdd(), или dump and die (вывод дампа переменной и завершение выполнения скрипта — прим. пер.). Symfony выпустила компонент VarDumper, и теперь он в арсенале Laravel.

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

Это функция очень полезна и даёт нам намного больше возможностей. Более подробную информацию вы найдёте в статье Laravel dd обновилась.

Изменение атрибутов Eloquent

Этим нововведением мы обязаны Дэйли Ризу. Изменение атрибутов позволяет конвертировать атрибуты в другой тип данных. Например, вы добавляете свойство casts в вашу модель:

PHP
protected $casts = [
    
'is_admin' => 'boolean',
    
'options' => 'array',
];

Это автоматически изменит тип is_admin на boolean. А options будут храниться в виде json и будут автоматически конвертированы в массив при выводе.

Это восхитительно, когда вы используете JavaScript, и вам необходимо совпадение типов.

Whoops больше не нужен

В Laravel 4 был обработчик ошибок Whoops. Он удалён из Laravel 5, но если он вам нужен, прочтите Как вернуть Whoops в Laravel 5.

Пакеты и Workbench

В системе работы с пакетами в Laravel произошло несколько значительных изменений. Наиболее заметное из них — отказ от Workbench в пользу использования пакетов Composer напрямую.

Вы можете узнать больше об этих изменениях из официальной документации или из руководства от Джона инт Хаута Загрузка представлений пакета/языковых файлов.

Psysh

/packages/proger/habravel/uploads/210-laravel-5-Psysh-300x171.png

Tinker — инструмент с интерфейсом командной строки для манипуляций над вашим кодом — теперь использует Psysh от Джастина Хальмана. Для тех, кто не знает, Psysh — это:

Консоль разработчика в режиме исполнения, интерактивный отладчик и REPL (Read-eval-print loop) — простая интерактивная среда программирования — для PHP.

Psysh супер мощный, вот его некоторые возможности:

  • Чтение документации по контексту. shdoc dd.
  • Команда shlist знает всё про ваш код, и любой другой. Легко выводит и ищет все переменные, константы, классы, интерфейсы, типажи, функции, методы и свойства.
  • Легко показывает исходный код любого пользовательского объекта, класса, интерфейса, типажа, константы, метода или свойства.
  • Ловит последнее исключение и предоставляет его по команде shwtf.
  • Отображает, ищет, сохраняет и воспроизводит историю вашей командной оболочки.

Уверен, он умеет намного больше и станет отличным инструментом в вашем арсенале.

SuperClosure

Ещё одно новшество — SuperClosure — библиотека для сериализации замыканий и анонимных функций от Джереми Линблума. В фреймворке она используется для замыканий очередей.

Новые генераторы

Artisan теперь ещё мощнее и может генерировать множество шаблонного кода для вас. Вот список некоторых доступных на данный момент:

  • make:command — создаёт новый класс команды
  • make:console — создаёт новую команду Artisan
  • make:controller — создаёт новый класс контроллера ресурса
  • make:event — создаёт новый класс события
  • make:middleware — создаёт новый класс промежуточного ПО
  • make:migration — создаёт новый файл миграции
  • make:model — создаёт новый класс модели Eloquent
  • make:provider — создаёт новый класс поставщика услуг
  • make:request — создаёт новый класс запроса формы
  • event:generate — генерирует пропущенные события и обработчики

Обновление

С помощью простой команды shcomposer update обновиться не получится. Так как это основная версия, приготовьтесь потратить несколько часов на обновление. Уже написано два руководства по этому процессу. Официальная документация и Руководство по обновлению от Мэтта.

Куда идти дальше?

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

2015 год обещает быть захватывающим для мира Laravel, и мне уже не терпится держать вас в курсе событий!

Как вы считаете, полезен ли этот материал? Да Нет

Комментарии (2)

myowsu

Ожидаем сегодня :)

Jack_White

Только начал разбираться с 4 версией а тут уже 5) Блин пробую и laravel и yii оба хорошие что-то в одном лучше, что-то в другом не могу определиться что выбрать) Спасибо за перевод

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.