Ура! Laravel 5 вышел!

А вы знакомы с Laravel?


  • Всего проголосовало
    12

Malezha

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

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

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

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

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

То, что находится внутри приложения, теперь разбито на следующие папки:
  • Commands (Команды)
  • Console (Консоль)
  • Events (События)
  • Exceptions (Исключения)
  • Handlers (Обработчики)
  • Http
  • Providers (Поставщики услуг)
  • Services (Услуги)
Если вы привыкли к предыдущим версиям Laravel, то это может застать вас врасплох. Но уверяю вас, примерно через два дня использования всё станет ясным и простым. Для получения дополнительной информации прочитайте Мэтта Штоффера.

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

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

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

Типичный пример использования сырого вывода — вспомогательные методы формы:
HTML:
{!! Form::open() !!}

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

Команды и события
Команды и события были переделаны. Эти функции подробно описаны как в документации, так и в следующих материалах:
Фасады и вспомогательные методы
Фасады по-прежнему есть в Laravel 5, но новые вспомогательные функции начинают замещать некоторые из наиболее распространённых элементов. Например, в Laravel 4 для отрисовки представления использовался такой код:
PHP:
View::make('path.to.view');
Теперь это простой вызов функции:
PHP:
view('path.to.view');

Вот ещё несколько:
  • abort()
  • action()
  • app()
  • app_path()
  • asset()
  • маршрутизация – get(), delete(), put()
  • back()
  • redirect()
  • response()
  • и многие другие…
Маршруты
В маршрутах две новые функции. и .

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

Внедрение метода контроллера
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
Следующее замечательное новшество — включение в состав фреймворка пакета от Фрэнка де Джонга. Если вы не знакомы с этим пакетом, я расскажу. Это абстракция файловой системы, которая позволяет вам легко подменять локальную ФС на удалённую.

Сейчас имеются следующие адаптеры:
  • Local
  • Amazon Web Services – S3
  • Rackspace Cloud Files
  • Dropbox
  • Copy
  • Ftp
  • Sftp (через phpseclib)
  • Zip (через ZipArchive)
  • WebDAV (через SabreDAV)
  • Azure Blob Storage
  • NullAdapter
Это значит, что вы легко сможете выгружать файлы во все эти сервисы и использовать внешнее хранилище проще, чем когда-либо. Я думаю, что это само по себе сэкономит огромное количество времени для разработки большинства приложений.

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

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

Вместо этого вы создаёте собственный файл .env, и легко можете настраивать его под свои нужды. А затем в любом файле настроек вы можете использовать что-то подобное:
PHP:
'database' => env('DB_DATABASE’, 'myproddb'),
Вы также можете создать дополнительные файлы для различных сред, например для тестирования. Кстати у Laracasts уже есть пример , в котором это уже используется.

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

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

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

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

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

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

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

Вот пример задачи:
PHP:
$schedule->command('cache:clear')
->hourly()
->sendOutputTo($filePath)
->emailOutputTo('[email protected]');

Анонс этой функции был встречен множеством смешанных реакций. Я из тех, кто считает её прекрасной. Мне нравится, что cron-задачи разделены по версиям, легко просматриваются в моём редакторе, и, кроме всего прочего, написаны на чистом английском.
PHP:
$schedule->call('SomeClass@method')->dailyAt('10:00');

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

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

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

Изменение атрибутов Eloquent
Этим нововведением мы обязаны . Изменение атрибутов позволяет конвертировать атрибуты в другой тип данных. Например, вы добавляете свойство casts в вашу модель:
PHP:
protected $casts = [
    'is_admin' => 'boolean',
    'options' => 'array',
];
Это автоматически изменит тип is_admin на boolean. А options будут храниться в виде json и будут автоматически конвертированы в массив при выводе.

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

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

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

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

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

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

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

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

Новые генераторы
Artisan теперь ещё мощнее и может генерировать множество шаблонного кода для вас. Вот список некоторых доступных на данный момент:
  • make:command — создаёт новый класс команды
  • make:console — создаёт новую команду Artisan
  • make:controller — создаёт новый класс контроллера ресурса
  • make:event — создаёт новый класс события
  • make:middleware — создаёт новый класс промежуточного ПО
  • make:migration — создаёт новый файл миграции
  • make:model — создаёт новый класс модели Eloquent
  • make:provider — создаёт новый класс поставщика услуг
  • make:request — создаёт новый класс запроса формы
  • event:generate — генерирует пропущенные события и обработчики
Обновление
С помощью простой команды composer update обновиться не получится. Так как это основная версия, приготовьтесь потратить несколько часов на обновление. Уже написано два руководства по этому процессу. и .

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

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


Источник:

Немного хочу добавить от себя.
Ларавел очень удобный и современный фреймворк в мире PHP. Он основан на проверенной временем Symfony 2, но черпает свое вдохновение с Ruby on Rails.
Такая комбинация создает достаточно простой в изучении и в то же время очень мощный инструмент для выполнения работы любой сложности.
Начав свое знакомство с версии 4.1 я был поражен наличием встроенных компонентов почти на любой случай и огромного количества пакетов буквально для всего: авторизации, админ-панели, mongodb драйвера - в общем все, что позволяет ускорить разработку. Но это и является наверное самым большим минусом - он достаточно тяжел и несколько проигрывает в скорости своему облегченному конкуренту Yii2.
Спасибо всем дочитавшим до этого момента :thumbsup:
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу