소개
Laravel의 기본 애플리케이션 구조는 대규모·소규모 어느 애플리케이션에도 적합한 출발점을 제공합니다. 다만 애플리케이션을 어떻게 구성할지는 자유입니다. Laravel은 클래스의 배치 장소에 거의 제한을 두지 않습니다. Composer가 클래스를 오토로드할 수만 있으면 문제없습니다.루트 디렉터리
새 Laravel 프로젝트를 생성하면 다음과 같은 디렉터리 구조가 생성됩니다.app/ 디렉터리
애플리케이션의 핵심 코드를 저장하는 디렉터리입니다.
컨트롤러·모델·미들웨어 등 애플리케이션의 거의 모든 클래스가 여기에 놓입니다.
기본적으로 Http·Models·Providers 서브디렉터리가 포함되어 있습니다.
Artisan 명령으로 클래스를 생성하면 다른 서브디렉터리도 자동으로 생성됩니다.
bootstrap/ 디렉터리
프레임워크를 부팅하는 app.php 파일을 포함합니다.
또한 라우트 캐시나 서비스 캐시 등의 성능 최적화 파일을 저장하는 cache/ 디렉터리도 포함됩니다.
config/ 디렉터리
애플리케이션의 모든 설정 파일을 저장합니다.
이 파일들을 읽고 사용 가능한 옵션을 파악해 두는 것을 권장합니다.
database/ 디렉터리
데이터베이스 마이그레이션·모델 팩토리·시더를 저장합니다.
SQLite 데이터베이스 파일도 여기에 배치할 수 있습니다.
public/ 디렉터리
애플리케이션에 대한 모든 요청의 진입점인 index.php를 포함합니다.
또한 이미지·JavaScript·CSS 같은 에셋도 여기에 저장됩니다.
resources/ 디렉터리
뷰와 컴파일 전의 CSS나 JavaScript 같은 원시 에셋을 저장합니다.
routes/ 디렉터리
애플리케이션의 모든 라우트 정의를 저장합니다.
기본적으로 web.php와 console.php 두 개의 라우트 파일이 포함됩니다.
| 파일 | 용도 |
|---|---|
web.php | 브라우저용 라우트. 세션·CSRF 보호·쿠키 암호화를 제공하는 web 미들웨어 그룹이 적용됩니다. |
console.php | Artisan 명령을 클로저로 정의하는 파일입니다. |
api.php | 상태 비저장 API 라우트. install:api 명령으로 추가합니다. |
channels.php | 이벤트 브로드캐스트 채널을 등록하는 파일입니다. |
storage/ 디렉터리
로그·컴파일된 Blade 템플릿·파일 기반 세션·파일 캐시 등 프레임워크가 생성한 파일을 저장합니다.
app/·framework/·logs/ 세 개의 서브디렉터리로 나뉘어 있습니다.
tests/ 디렉터리
자동화된 테스트를 저장합니다.
Pest 또는 PHPUnit에 의한 유닛 테스트와 기능 테스트 샘플이 처음부터 포함되어 있습니다.
vendor/ 디렉터리
Composer의 의존 관계를 저장합니다. 이 디렉터리는 소스 컨트롤에 커밋하지 마세요.
app/ 디렉터리 상세
app 디렉터리의 많은 클래스는 Artisan 명령으로 생성할 수 있습니다.
사용 가능한 명령을 확인하려면 다음을 실행해 주세요.
Http/ 디렉터리
Http/ 디렉터리
컨트롤러·미들웨어·폼 리퀘스트를 저장합니다.
애플리케이션의 요청 처리 로직 대부분이 여기에 놓입니다.
Models/ 디렉터리
Models/ 디렉터리
Eloquent 모델 클래스를 모두 저장합니다.
각 데이터베이스 테이블에 대응하는 “모델”이 존재하며, 데이터 조회나 삽입에 사용됩니다.
Providers/ 디렉터리
Providers/ 디렉터리
애플리케이션의 모든 서비스 프로바이더를 저장합니다.
서비스 프로바이더는 서비스를 컨테이너에 바인딩하고 이벤트를 등록하는 등 애플리케이션을 부팅하기 위한 처리를 수행합니다.
Console/ 디렉터리
Console/ 디렉터리
커스텀 Artisan 명령을 모두 저장합니다.
make:command 명령으로 생성할 수 있습니다.Exceptions/ 디렉터리
Exceptions/ 디렉터리
애플리케이션의 커스텀 예외를 모두 저장합니다.
make:exception 명령으로 생성할 수 있습니다.중요한 파일
.env 파일
환경별로 다른 설정 값(데이터베이스 접속 정보·API 키 등)을 관리합니다.
config/ 내의 설정 파일에서 env() 헬퍼를 통해 참조됩니다.
artisan 파일
Artisan 커맨드라인 인터페이스의 진입점입니다.
php artisan <명령 이름> 형식으로 실행합니다.
다음 단계
라우팅
라우트를 정의하는 방법과 URL과 애플리케이션 로직을 연결하는 방법을 배웁니다.