티스토리 뷰

Laravel 5.4이 한국 시간 2017-01-24일 오후 4시에 Composer에 Release 되었습니다.

이 포스트는 Laravel new의 Laravel 5.4 Is Now Released 글을 번역한 내용입니다.


문제 될 경우 바로 삭제하도록 하겠습니다.

Laravel Dusk


Laravel Dusk는 JavaScript Application을 위한 브라우저 테스트 도구입니다. Laravel Dusk는 상호 작용에 의한 올바른 페이지 테스트에 초점이 잡혀 있으며, Dusk를 이용하여 클릭 버튼 / 링크, 양식, 드래그 앤 드롭과 같은 용도로 사용할 수 있습니다.


Dusk는 ChromeDriver와 Facebook Php-webdriver를 테스트에 사용합니다. 모든 Selenium 브라우저에서 작동하지만 기본적으로 ChromeDriver가 제공되므로 JDK 또는 Selenium을 설치하지 않아도됩니다.


Dusk는 Selenium을 설정하고 매번 서버를 시작하지 않아도 사용하기가 매우 쉽습니다.


Laravel Mix


Laravel Mix는 차세대 Elixir입니다. Gulp 대신 webpack으로 제작되었다고 하며, 확인해보니 최근 Release된 Webpack 2.x를 사용하고 있습니다. Major 변경이다 보니 이름까지 변경하게 되었다고 합니다.


기존 Elixir를 커스텀하지 않은 한 Mix로 마이그레이션하는건 크게 문제되지 않는다고 하며 Laracast에서 Mix를 다루는 영상이 업로드 되어있다고 합니다.

Blade Components and Slots


Components 와 Slots은 Blade templates이 더욱 더 유연하게 사용이 가능하도록 디자인 되었습니다. 아래와 같이 alert을 보여주는 예시가 있다고 가정하였을때


// alert.blade.php
<div class="alert">
    {{ $slot }}
</div>

아래와 같이 위의 Componet를 template에 추가가 가능합니다.

@component('inc.alert')
    This is the alert message here.
@endcomponent

Markdown Emails


Laravel 5.3에서는 이메일과 SMS 그리고 기타 다른 채널을 통하여 같은 메세지를 보낼 수 있는 Mailable과 Notifications의 두가지 메일과 관련된 기능이 소개되었습니다.


이러한 개선 사항을 바탕으로 Laravel 5.4에는 메일 템플릿에 MarkDown 시스템이 추가되었습니다.



Automatic Facades


아래의 예시처럼 모든 클래스를 Facade로 사용이 가능합니다.

namespace App;

class Zonda 
{
    public function zurf()
    {
        return ‘Zurfing’;
    }
}

위의 클래스를 router나 controller에 아래와 같이 사용 할 수 있습니다.

use Facades\ {
    App\Zonda
};

Route::get('/', function () {
    return Zonda::zurf();
});

Route Improvements


또 다른 변경점은 router 구문을 middleware나 정의된 name으로 시작이 가능하다는 것입니다.

Route::name('profile')->get('user/{id}/profile', function ($id) {
    // some closure action...
});

Route::name('users.index')->middleware('auth')->get('users', function () {
    // some closure action...
});

Route::middleware('auth')->prefix('api')->group(function () {
    // register some routes...
});

Route::middleware('auth')->resource('photo', 'PhotoController');

또한 route caching layer는 큰 규모의 프로젝트에서 route 매칭에 크게 개선하였습니다.

Higher Order Messaging for Collections


이 새로운 기능을 설명하기 위해서는 예제 코드를 보여주는게 가장 좋은 방법입니다. collection을 each를 이용하여 작업을 수행할 시 기존에는 아래와 같이 코드를 작성하였습니다.

$invoices->each(function($invoice) {
    $invoice->pay();
});

laravel 5.4 부터는 아래처럼 작성이 가능합니다.

$invoices->each->pay();

More New Features


다른 변경 사항 및 개선 사항은 다음과 같습니다.


  • retry helper 함수 추가
  • array_wrap helper 함수 추가
  • 503 error 기본 페이지 추가
  • ::class 표기법으로 전환되었습니다.
  • password reset router에 name이 추가되었습니다.
  • phpRedis가 지원됩니다.
  • 유효성 검사에 IPv4 와 IPv6이 추가되었습니다.
  • date_format 유효성 검사가 조금 더 정확해 졌습니다.

Upgrading to Laravel 5.4



공식 문서에는 전체 업그레이드 가이드가 포함되어 있으며, 주의해야 할 몇 가지 변경 사항이 있습니다.

Laravel Tinker는 이제 독립된 패키지이며, composer를 이용하여 설치가 가능합니다.


composer require laravel/tinker

컴포저 설치가 끝난 후에 config / app.php에 provider를 추가합니다.

Laravel\Tinker\TinkerServiceProvider

laravel Test로 browser kit를 사용 하셨을 경우 Laravel Dusk로 마이그레이션을 하시거나 이전 패키지를 컴포저로 사용해야 합니다.

composer require laravel/browser-kit-testing --dev

마지막으로 composer.json에 laravel/framework의 버전을 5.4.*로 변경합니다.

Learning More About Laravel 5.4


조금 더 자세한 내용은 Laracasts에 새로운 기능들과 관련된 시리즈가 모두 준비되어있으며, 공식 문서에는 버전 업 가이드버전 릴리즈 노트에서 확인이 가능합니다.



Laravel 5.3

Laravel 5.4


댓글