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

33
Laravel Upgrade issue tyle - 박관웅

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

Page 1: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

Laravel

Upgrade issuetyle - 박관웅

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

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

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

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

Upgrading To v5.3 from v5.2

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

upgrade guide

Page 5: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

"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",

Page 6: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

App\Providers\EventServiceProvider

App\Providers\RouteServiceProvider

App\Providers\AuthServiceProvider

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

Page 7: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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 삭제

Page 8: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

새로운 Notifiaction 서비스

config/app.php

Illuminate\Notifications\NotificationServiceProvider::class 등록

User 메일전송할경우

User.php에use Illuminate\Notifications\Notifiable

Notifiable Trait 추가

Page 9: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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 수정해야한다. (아래깃헙파일과동일하게작성)

Page 10: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

Password Reset Link Notification 변경

Page 11: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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

Page 12: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

Controller Constructor 에서 Session

Page 13: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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

이슈사항

해결방법

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

Page 14: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

Database - query builder

Page 15: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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

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

이슈사항

해결방법

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

Page 16: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

middleware - ‘can’ namespace 변경

Page 17: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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

이슈사항

해결방법

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

‘can’ 네임스페이스변경

Page 18: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

Exception - Unauthenticated 메소드

Page 19: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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

이슈사항

해결방법

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

Page 20: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

Upgrading To v5.4 from v5.3

Page 21: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

upgrade guide

Page 22: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

"laravel/framework": "5.4.*"

"phpunit/phpunit": "~5.7"

composer update 패키지

php artisan view:clear

php artisan route:clear

project cache clean

upgrade

guide

Page 23: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

tinker 가사라졌다.

Page 24: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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

이슈사항

해결방법

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

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

Page 25: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

Guzzle version upgrade

Page 26: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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

이슈사항

해결방법

Guzzle version +6.0 이상으로변경

Page 27: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

Container - bind, instance를통한 alias

Page 28: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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

이슈사항

해결방법

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

Page 29: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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

Page 30: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

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

이슈사항

해결방법

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

Page 31: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

Mail Class 사용방식변경

Page 32: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue

이슈사항

해결방법

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

아래주소참고

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

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

Page 33: Laravel v5.2 -> v5.3 -> v5.4  Upgrade issue