Comento Laravel Style Guide
이 문서는 코멘토에서 사용하는 라라벨 스타일 가이드를 정리하기 위한 문서입니다.
스타일 가이드에 정답은 없으며 Laravel, PHP의 버전과 논의를 통해 지속적으로 변경됩니다.
라우트 정의는 컨트롤러와 메소드를 이용합니다.
컨트롤러를 입력할 때는 전체 경로를 입력하지 않고 use
를 사용합니다.
컨트롤러의 이름이 동일하거나, 제품의 폴더 안에 들어가 있어 단순해진 이름으로 인해 오해의 소지가 있을 경우에는 as
를 사용해서 클래스의 성격 및 용도를 명확하게 해서 사용합니다.
use App \Http \Controllers \UserController ;
use App \Http \Controllers \Api \Jwt \V2 \EduCamp \LiveClassController as EduLiveClassController ;
Route::get ('/user ' , [UserController::class, 'index ' ]);
Route::post ('ready/{eduCamp} ' , [EduLiveClassController::class, 'readyToLiveClass ' ]);
Route URI의 구조가 Controller 이름, Method가 되도록 구성합니다.
Route::prefix ('coupon ' )->group (function () {
Route::post ('/download/code ' , [CouponController::class, 'downloadCode ' ]);
})
// 제품 단위가 클 경우 Controller를 세부 단위까지 분리해서 작성합니다.
Route::prefix ('vod ' )->group(function () {
Route::post ('check/paid ' , [VodCheckController::class, 'paid ' ]);
// ...
Route::post ('note/list ' , [VodNoteController::class, 'list ' ]);
// ...
}
다음의 일관성을 지킵니다.
케밥 케이스(kebab-case)로 작성: 가독성을 위해 하이픈(-)을 사용합니다.
밑줄 (_)은 사용하지 않습니다.
소문자를 사용합니다.
제품 단위가 커지면 파일을 분리합니다.
분리한 파일은 routes/resources 폴더에 저장합니다.
// before
Route::prefix ('vod ' )->middleware (['auth.jwt ' ])->group (function () {
// ...
});
// after
Route::prefix ('vod ' )->middleware (['auth.jwt ' ])->group (
base_path ('routes/resources/vod.php ' ),
);
Validation은 Validator::make
를 사용합니다.
Form Request를 사용하지 않는 이유는 현재 잘 사용하기 위한 정책이 아직 마련되지 않았기 때문입니다.
그리고 유지보수 측면으로도 컨트롤러에서 확인하는게 더 빠르기 때문입니다.
Valitator::make
아래에는 fails()
를 이용해서 early return을 합니다.
$ validator = Validator::make ($ request ->all (), [
'title ' => 'required|unique:posts|max:255 ' ,
'body ' => 'required ' ,
]);
if ($ validator ->fails ()) {
}
json response는 response()->json()
형태를 사용합니다.
status code는 직관성을 위해 위해 JsonResponse
를 사용합니다.
return response ()->json (
[
'message ' => 'ok ' ,
'data ' => $ data ,
],
JsonResponse::HTTP_OK
);
composer require laravel/pint --dev