Laravel v5.2 -> v5.3 -> v5.4 Upgrade issue

Preview:

Citation preview

Laravel

Upgrade issuetyle - 박관웅

tyle.io 서비스업그레이드할때적용했었던부분들만정리

그외더많은수정사항이존재하기때문에가이드문서확인

Upgrading To v5.3 from v5.2

upgrade guide

"laravel/framework": "5.3.*"

"symfony/css-selector": "3.1.*"

composer update 패키지

php artisan view:clear

php artisan route:clear

project cache clean

upgrade

guide

"symfony/dom-crawler": "3.1.*"

"php": ">=5.6.4",

App\Providers\EventServiceProvider

App\Providers\RouteServiceProvider

App\Providers\AuthServiceProvider

boot 메서드에인자삭제삭제한인자는 Facade 형식으로호출

Auth Scaffolding

https://github.com/laravel/laravel/tree/5.3/app/Http/Controllers/Auth

아래깃헙에서 4개의 Auth Controller 를프로젝트에 Ctrl - C,V 한다.

App\Http\Controllers\Controller.php

AuthorizesResources Trait 삭제

새로운 Notifiaction 서비스

config/app.php

Illuminate\Notifications\NotificationServiceProvider::class 등록

User 메일전송할경우

User.php에use Illuminate\Notifications\Notifiable

Notifiable Trait 추가

routes 정책변경

https://github.com/laravel/laravel/tree/5.3/routes

프로젝트 root에 routes 폴더생성web.php

api.php

파일생성(아래깃헙참고)

Route::controller 와같은암시적인선언 deprecated

명시적으로모든라우팅메서드작성(아래참고)

https://laravel.kr/docs/5.3/upgrade#5.2-deprecations

https://github.com/laravel/laravel/blob/5.3/app/Providers/RouteServiceProvider.php

기존에 routes.php 에서 routes 폴더를통해구분하기때문에RouteServiceProvider.php 수정해야한다. (아래깃헙파일과동일하게작성)

Password Reset Link Notification 변경

Auth 정책이세분화되면서 Password Reset Link Email Notification 도세분화되었다.

Custom한 email 을전송하는법변경

이슈사항

해결방법

“php artisan make:notifiaction PasswordReset”

커맨드를통해 Password Reset Email Notification 클래스생성원하는 form과양식을 Custom하게수정하여전송한다.(아래가이드참고)

https://laravel.kr/docs/5.3/notifications#mail-notifications

Controller Constructor 에서 Session

v5.3에서는 middleware가실행되지않기때문에세션(및 Auth관련)은 constructor에서 access 불가

이슈사항

해결방법

closure 기반 middleware를 constructor에직접정의하여해결

Database - query builder

query builder는기존에순수배열을반환하는대신Illuminate\Support\Collection 를반환

이럼으로써 query builder와 Eloquent 와일관성획득

이슈사항

해결방법

기존방식을원할경우아래와같이 ‘all()’ 을추가한다.

middleware - ‘can’ namespace 변경

HTTP Kernel.php에정의되어있던 ‘can’ 미들웨어변경문제

이슈사항

해결방법

HTTP\Kernel.php -> $routeMiddleware에아래와같이

‘can’ 네임스페이스변경

Exception - Unauthenticated 메소드

App\Exceptions\Handler 클래스에 unauthenticated 가새롭게추가됨

이슈사항

해결방법

인증관련 exception을 HTTP응답으로변환해준다.

Upgrading To v5.4 from v5.3

upgrade guide

"laravel/framework": "5.4.*"

"phpunit/phpunit": "~5.7"

composer update 패키지

php artisan view:clear

php artisan route:clear

project cache clean

upgrade

guide

tinker 가사라졌다.

기존 ‘php artisan tinker’ 커맨드를사용하면안된다.

이슈사항

해결방법

기존커맨드를사용하기위해선 laravel/tinker 패키지설치해야한다.

composer 로설치이후, config/app.php 에 serviceprovider 등록한다.

Guzzle version upgrade

기존 Guzzle 패키지에서업그레이드해야한다.

이슈사항

해결방법

Guzzle version +6.0 이상으로변경

Container - bind, instance를통한 alias

기존엔 aliasing을위해 bind/instance 사용하여인자로배열을전달하였다.

이슈사항

해결방법

이제부턴 alias 메소드를사용하여해결하는걸로변경(Facade 생성할때 serviceprovider에서이용)

Container - share 메서드레거시로등극

ServiceProvider에 share를통해인스턴스등록하던것레거시로등극

이슈사항

해결방법

share 메서드대신에 singleton 메서드로변경

Mail Class 사용방식변경

이슈사항

해결방법

mailables 방식으로변경되어야한다.

아래주소참고

형식대로사용하던방법변경

https://laravel.kr/docs/5.4/mail