이 FAQ는 신규 프로젝트(Laravel 11 이후)를 대상으로 하고 있습니다. 기존 프로젝트의 업그레이드 절차는 이관 가이드를 참조해 주세요.
config 파일이 적다
config 파일이 적다
새 구조에서는 변경 빈도가 낮은 config 파일이 프로젝트에서 삭제되어 있습니다. 이 파일들은 프레임워크 내의
config/가 사용됩니다.프로젝트 측의 config/와 프레임워크 측의 config/는 머지되어, 프로젝트 측이 우선됩니다. 커스터마이즈가 필요해진 시점에 파일을 작성하면 반영됩니다.app/Http/Middleware가 없어서 미들웨어 설정을 변경할 수 없다 / app/Http/Kernel.php가 없다
app/Http/Middleware가 없어서 미들웨어 설정을 변경할 수 없다 / app/Http/Kernel.php가 없다
새 구조에서는 커스텀 미들웨어의 파일 자체는
app/Http/Kernel.php가 폐지되고, 미들웨어의 설정은 bootstrap/app.php의 withMiddleware()에서 합니다.app/Http/Middleware/에 계속 작성합니다.컨트롤러 내에서 $this->middleware()를 사용할 수 없다
컨트롤러 내에서 $this->middleware()를 사용할 수 없다
$this->middleware()는 Illuminate\Routing\Controller의 기능이며, 새 구조의 빈 베이스 컨트롤러에서는 사용할 수 없습니다.대신 HasMiddleware 인터페이스를 구현하여 middleware() 메서드를 정의합니다.#[Middleware] Attribute도 사용할 수 있습니다.app/Console/Kernel.php가 없어서 Schedule을 설정할 수 없다
app/Console/Kernel.php가 없어서 Schedule을 설정할 수 없다
새 구조에서는
app/Console/Kernel.php가 폐지되고, 스케줄의 설정 장소가 바뀌었습니다.routes/console.php에 기술한다(권장):bootstrap/app.php에 기술한다:이벤트와 리스너의 등록 방법을 모르겠다
이벤트와 리스너의 등록 방법을 모르겠다
새 구조에서는 수동 등록이 필요한 경우에는
EventServiceProvider가 폐지되고, 이벤트와 리스너의 수동 등록이 불필요해졌습니다.자동 등록의 구조: 리스너 클래스의 handle() 메서드의 인수에 이벤트 클래스를 타입 선언하면 자동으로 등록됩니다.AppServiceProvider::boot()에서 합니다.config/app.php에의 서비스 프로바이더 추가 방법을 모르겠다
config/app.php에의 서비스 프로바이더 추가 방법을 모르겠다
새 구조에서는, 서비스 프로바이더의 목록 관리가
config/app.php에서 bootstrap/providers.php로 바뀌었습니다.artisan make:provider로 작성한 프로바이더는 자동적으로 여기에 추가 기재됩니다.app/Exceptions/Handler.php가 없다
app/Exceptions/Handler.php가 없다
새 구조에서는
app/Exceptions/Handler.php가 폐지되고, 예외 처리의 설정은 bootstrap/app.php의 withExceptions()에서 합니다.라우팅을 커스터마이즈하고 싶다
라우팅을 커스터마이즈하고 싶다
라우트의 커스터마이즈는 완전히 제어한다(Laravel 10의
bootstrap/app.php의 withRouting()에서 합니다.라우트 파일을 추가한다:RouteServiceProvider와 같음):using을 지정하면 Laravel의 기본 라우트 등록이 완전히 무효가 되고, 모두 스스로 제어할 수 있습니다.Laravel 기본의 ServiceProvider를 대체하고 싶다
Laravel 기본의 ServiceProvider를 대체하고 싶다
config/app.php에 providers 키를 추가하면, 프레임워크 내의 config/app.php와 머지되어 반영됩니다.replace() 메서드로 기본 프로바이더를 독자 구현으로 바꿔놓을 수 있습니다.routes/api.php가 없다
routes/api.php가 없다
Laravel 11 이후, API 기능은 기본으로는 포함되어 있지 않고, 필요한 경우에 개별 설치합니다.이 커맨드로 이하가 작성·설정됩니다.
routes/api.php- API 인증용 Laravel Sanctum의 설정
bootstrap/app.php에의 API 라우트 등록
routes/channels.php가 없다
routes/channels.php가 없다
Laravel 11 이후, 브로드캐스트 기능도 기본으로는 포함되어 있지 않고, 필요한 경우에 개별 설치합니다.이 커맨드로 이하가 작성·설정됩니다.
routes/channels.php- Laravel Reverb의 설치 설정
- 브로드캐스트 설정 파일
도중 참여한 프로젝트가 신구 어느 쪽인지 판별하고 싶다
도중 참여한 프로젝트가 신구 어느 쪽인지 판별하고 싶다
bootstrap/app.php의 내용을 확인해 주세요.Laravel 11 이후의 새 구조(또는 이관 완료):return Application::configure(... 형식이라면 새 구조, 그렇지 않으면 구 구조 그대로 업그레이드한 프로젝트입니다. 구 구조의 프로젝트를 새 구조로 이관하는 절차는 이관 가이드를 참조해 주세요.관련 페이지
Laravel 11 이후의 애플리케이션 구조
새로운 애플리케이션 구조의 전모와
ApplicationBuilder의 내부 구현을 해설합니다.구 구조에서 새 구조로의 이관 가이드
Laravel 10의 구 앱 구조에서 Laravel 11 이후의 새 구조로 이관하는 절차를 해설합니다.