티스토리 뷰


Laravel 5.5 Release가 2017년 7월인 다음달로 예정되어있습니다. 정식 배포전 5.5버전에서 변경되는 사항들을 정리하였습니다.

(해당 포스트의 정보는 laravel news에 있는 내용들을 정리하였습니다.)

저작권에 문제가 될 경우 삭제하도록 하겠습니다.


1. LTS 버전 변경


현재 laravel의 LTS(Long Term Supported)버전은 5.1입니다. 이전 5.1버전과 마찬가지로 2년간 버그 픽스와 3년간 보안 업데이트가 이루어질 예정이라고 합니다.

현재 서비스에서 5.1 버전으로 유지하고 계신분들은 5.5로 버전 업데이트 생각도 해보시는게 좋을듯 합니다. 그전에 다음 변경사항을 꼭 참고하시는게 좋을것 같네요.


2. PHP7.0 이상부터 지원


Laravel 개발자인 Taylor가 laravel 5.5부터 php 7.0+가 필요하다고 트위터를 통해 발표했었습니다. 개인적으로도 꼭 Laravel때문이 아니여도 php버전은 7.0+으로 버전 업을 하시는걸 추천드립니다. 마이그레이션 가이드는 php 공식 매뉴얼에 포함되어있으니 마이그레이션시 참고하시면 좋겠네요.


3. vendor:publish의 편의성 추가


이전 버전에서는 php artisan vendor:publish를 이용한 추가한 패키지들의 vendor 파일을 추가하는 방식이 조금 불편했었는데, 이 부분을 CLI상에서 선택해서 추가하도록 변경되었습니다. 말로 조금 어렵게 표현했는데 아래의 이미지를 참고하시면 좋을듯 합니다.(이미지를 누르면 조금더 잘보입니다.)



4. 커스텀 유효성 검사패턴 추가


laravel에는 request의 유효성체크를 위해 다양한 유효성 체크 패턴을 제공하고있지만 한국에 안맞는 패턴이 제법있어서 이러한 부분은 커스텀을 해야했는데 불편했던 커스텀 방식이 직관적으로 수정이 되었습니다. 이부분은 Taylor의 블로그 글을 통해 확인하시는게 좋을듯 합니다.


5. 유효성 검사의 only 메서드 결합


개인적으로 이 부분은 의아하긴 합니다만, request를 validate 메서드를 통해 유효성 검사한 이후 유효성 검사 패턴에 있는 항목들만 only 메서드를 호출하여 리턴 하도록 수정되었습니다. 아래의 코드를 보시면 이해가 편하실듯 하네요.

public function store()
{
    $data = $this->validate(request(), [
        'name' => 'required',
        'price' => 'required|numeric',
        'category_id' => 'numeric|exists:categories',
    ]);

    // $data = request()->only('name', 'price', 'category_id');

    return Product::create($data);
}


저같은 경우 저런 처리가 필요한 경우는 별도 함수를 만들어서 처리하고있었는데 5.5 버전 올릴때 확인해봐야겠네요.


6. 패키지 자동 발견기능


laravel에서 추가하는 패키지들은 개발 환경에서만 필요한 패키지들이 많이 있습니다. 예를 들면 laravel-debugbar 같은 패키지가 있겠네요. 이러한 패키지를 laravel에 추가하기 위해서는 config/app.php 에서 추가하거나 AppServiceProvider에서 환경에 따라 등록하는 코드를 작성해주어야 하는데 사실 이 부분이 매우 코드를 지저분하게 만들고 있긴 했습니다. 이러한 부분을 개선하고자 composer의 dev-require인 패키지들은 자동으로 등록해준다고 합니다.


원리가 궁금해서 찾아보니 composer.json에서 extra부분에 아래와 같은 방식으로 추가한다고 하는군요.

결국은 개발용 패키지들쪽에서 처리를 해야하는거네요. 업데이트가 되고나면 사용하던 개발용 패키지에 PR해야 할 듯 합니다.


"laravel": {
      "providers": [
        "Barryvdh\\Debugbar\\ServiceProvider"
      ],
      "aliases": {
        "Debugbar": "Barryvdh\\Debugbar\\Facade"
      }
    }



이외에 다양한 변경사항을 laravel news에서 확인 가능하며, 아마 LTS 버전으로 출시되다보니 5.4에서 변경되었던 elixir ->  mix 같은 변경사항은 없을것 같습니다.

댓글