Laravel Framework와 관련하여 폴더구조를 뜯어보게 되었다.
1차적으로 존재하는 폴더들은 이렇게 구성이 되어있지만, 중요하다 싶은 폴더구조는 별도로 굵은글씨체로 표기하기로 한다.
1. app - Model, Controller
2. database - DB
3. resources - View
4. routes - Router
모든 폴더와 그 안의 내용들이 중요하겠으나, 일단 초보이므로 MVC 패턴에서 가장 중요한 폴더만 따로 표기하기로 한다.
├── README.md
├── app
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
├── tree.txt
├── vendor
└── vite.config.js
Artisan을 통해 Controller와 Model생성 또한 가능하다.
php artisan make:controller [컨트롤러명] --[형태] --[사용할모델]
php artisan make:controller TestController --resource --model=Test
app
├── Console
│ └── Kernel.php
├── Exceptions
│ └── Handler.php
├── Http
│ ├── Controllers
│ │ ├── BoardsController.php
│ │ └── Controller.php
│ ├── Kernel.php
│ └── Middleware
│ ├── Authenticate.php
│ ├── EncryptCookies.php
│ ├── PreventRequestsDuringMaintenance.php
│ ├── RedirectIfAuthenticated.php
│ ├── TrimStrings.php
│ ├── TrustHosts.php
│ ├── TrustProxies.php
│ ├── ValidateSignature.php
│ └── VerifyCsrfToken.php
├── Models
│ ├── Board.php
│ └── User.php
└── Providers
├── AppServiceProvider.php
├── AuthServiceProvider.php
├── BroadcastServiceProvider.php
├── EventServiceProvider.php
└── RouteServiceProvider.php
migrations의 폴더 내에는 DB와 연동시킬 database의 테이블 정보가 담겨있다.
migration내에 DB를 생성했을 경우 DB가 변동된다고 하더라도 이관이 가능한 장점을 지니고 있다.
참고로 migrations 하위의 table.php파일들은 최초로 자동생성되는 파일들이다.
.
├── factories
│ └── UserFactory.php
├── migrations
│ ├── 2014_10_12_000000_create_users_table.php
│ ├── 2014_10_12_100000_create_password_reset_tokens_table.php
│ ├── 2019_08_19_000000_create_failed_jobs_table.php
│ ├── 2019_12_14_000001_create_personal_access_tokens_table.php
└── seeders
└── DatabaseSeeder.php
프론트 부분이 보여질 공간이다.
타 폴더구조와 동일하게 css/js/views 구조형태로 나뉘어져있다.
단, laravel 같은 경우는 blade 템플릿을 기반으로 하기에 일반적인 제목.php가 아닌, 제목.blade.php형태로 작성해야한다.
├── css
│ └── app.css
├── js
│ ├── app.js
│ └── bootstrap.js
└── views
├── boards
│ └── index.blade.php
└── welcome.blade.php
라라벨에는 라우터기반의 프레임워크로, 반드시 해당위치를 거쳐가야 한다.
라우터와 관련된 추가적인 개념은 차후에 별도로 작성할 예정이다.
지금은 그냥 쉽게말해 경로를 연결해주는 역할을 하는 정도로만 생각하자.
.
├── api.php
├── channels.php
├── console.php
└── web.php
Route::resource('test', TestController::class);