Laravel 11 업그레이드

2024. 3. 19. 14:15개발/PHP

간단하게 운영중인 사이트가 Laravel 10으로 되어 있었는데,
이번에 Laravel 11로 업그레이드 하면서 적용한 몇가지 가이드를 남깁니다.

 

config 정리

config는 github에 올라온 파일을 보고 변경했습니다.
(https://github.com/laravel/laravel/tree/11.x/config)

1. config/app.php 및 provider 정리

config/app.php을 정리하면서 기존에 여기에 정리된 provider를 정리가 필요하게 되었습니다.
공식문서를 보면 provider 등록은  bootstrap/provider.php에서 하는 것으로 변경되었습니다. 
(https://laravel.com/docs/11.x/providers#registering-providers)
그래서 bootstrap/provider.php를 생성하고 기존에 쓰던 provider를 추가했습니다.

bootstrap/provider.php

만약 app.php에서 alias를 쓰셨던 분들도 있을 것입니다.
이 부분은 어디로 마이그레이션을 하는지 찾지 못했지만 기존 처럼 app.php에 놓고 쓰셔도 됩니다.

2. 나머지 config 정리

나머지 config 파일은 github의 config 파일을 보면서 변경하였습니다.

laravel10으로의 변경점을 보면 주로 env에 의존하는 형태로 많이 바뀌었고 용어의 변경, 간단한 기본 값들을 바뀌는 걸 볼 수 있었는데 실제로 확인해보면 더 재미있습니다.

전체 변경점은 아래 commit에서 확인할 수 있습니다.
https://github.com/idiotlabs/laravel-serverless/commit/d915dc6976c9fa541049807766373e168979d526

 

route & middleware 정리

route 정리를 하는 위치가 bootstrap/app.php로 위치가 변경되었습니다.
기존에 쓰던 RouteServiceProvider는 삭제하고 bootstrap/app.php를 생성했습니다.

저는 기존에 routes/api.php도 썼기 때문에 bootstrap/app.php의 withRouning()에 api도 추가합니다.

 

이제 middleware를 정리합니다.

Global Middleware는 use를 이용해서 정리합니다.
(https://laravel.com/docs/11.x/middleware#manually-managing-laravels-default-global-middleware)

web, api로 쓰던 미들웨어 그룹은 default로 제공해주기 때문에 append, prepend를 이용할 수도 있습니다.
(https://laravel.com/docs/11.x/middleware#laravels-default-middleware-groups)

그러나 저는 명시적으로 관리하기 위해 전체를 다시 작성했습니다.
(https://laravel.com/docs/11.x/middleware#manually-managing-laravels-default-middleware-groups)

alias도 마찬가지로 다시 작성합니다.

 

schedule 정리

task scheduling은 routes/console.php에서 작성하는 것으로 변경되었습니다.
(https://laravel.com/docs/11.x/scheduling#defining-schedules)