Article

Laravel PSR 코딩 표준 완벽 가이드

개요

Laravel 프레임워크는 PHP 커뮤니티의 표준 코딩 스타일을 따릅니다. Laravel 8 이전 버전에서는 PSR-2를 기반으로 하였으나, 최신 버전에서는 PSR-12로 업그레이드되었습니다. 이 가이드는 Laravel 프로젝트에서 일관된 코드 스타일을 유지하기 위한 필수 규칙들을 정리합니다.

PSR-2 vs PSR-12

항목PSR-2PSR-12
제정 연도2012년2019년
사용 버전Laravel 7 이하Laravel 8 이상
주요 변화기본 표준선언 문법 개선
화살표 함수미지원지원

들여쓰기와 공백

기본 규칙

  • 들여쓰기: 스페이스 4개 (탭 문자 사용 금지)
  • 한 줄 길이: 최대 80-120자 권장
  • 줄 끝 공백: 제거해야 함
  • 파일 끝: 줄바꿈으로 종료
// ✓ 올바른 예
namespace App\Models;

class User
{
    protected $fillable = [
        'name',
        'email',
    ];
}

// ✗ 잘못된 예
namespace App\Models;
class User {
    protected $fillable = ['name', 'email'];
}

클래스와 메서드 정의

클래스 선언

namespace App\Http\Controllers;

class UserController extends Controller
{
    // 클래스 본문
}

메서드 정의

class UserController extends Controller
{
    public function index()
    {
        return view('users.index');
    }
    
    public function show($id)
    {
        return view('users.show', ['user' => User::find($id)]);
    }
}

메서드 간에는 한 줄의 빈 라인으로 구분합니다.

네이밍 컨벤션

클래스명

  • PascalCase 사용
  • 각 단어의 첫 글자는 대문자
  • 예: UserController, BlogPost, CommentRepository

메서드명과 변수명

  • camelCase 사용
  • 첫 글자는 소문자, 다음 단어부터 대문자
  • 예: getUserById(), calculateTotal, isActive

상수명

  • UPPER_SNAKE_CASE 사용
  • 예: DATABASE_HOST, API_TIMEOUT

제어 구조

// if 문
if ($condition) {
    // 코드
} elseif ($otherCondition) {
    // 코드
} else {
    // 코드
}

// for 루프
for ($i = 0; $i < 10; $i++) {
    // 코드
}

// foreach 루프
foreach ($users as $user) {
    echo $user->name;
}

// switch 문
switch ($value) {
    case 'option1':
        // 코드
        break;
    case 'option2':
        // 코드
        break;
    default:
        // 기본 코드
}

선언 문법 (PSR-12)

함수 선언

// 짧은 함수
public function getName(): string
{
    return $this->name;
}

// 긴 함수 시그니처는 개행
public function processLargeDataSet(
    string $input,
    int $count,
    bool $verbose
): array {
    return array_map(fn($item) => $item * 2, range(1, $count));
}

화살표 함수 (PHP 7.4+)

// PSR-12부터 공식 지원
$numbers = [1, 2, 3, 4, 5];
$squared = array_map(fn($n) => $n ** 2, $numbers);
// 결과: [1, 4, 9, 16, 25]

코드 포맷팅 도구

Laravel 프로젝트에서 자동으로 스타일을 적용하려면:

PHP-CS-Fixer 사용

composer require --dev friendsofphp/php-cs-fixer

# 스타일 자동 수정
php vendor/bin/php-cs-fixer fix app/

Pint 사용 (권장)

composer require --dev laravel/pint

# 스타일 확인
./vendor/bin/pint --test

# 스타일 자동 수정
./vendor/bin/pint

IDE 설정

PhpStorm / IntelliJ IDEA

  1. Settings → Editor → Code Style → PHP
  2. Scheme 선택: PSR-2 또는 PSR-12
  3. 저장 시 자동 포매팅 활성화

VS Code

.editorconfig 파일을 프로젝트 루트에 생성:

root = true

[*.php]
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

실무 팁

  1. 팀 협업: .php-cs-fixer.php 또는 pint.json을 프로젝트에 커밋하여 모든 개발자가 동일한 스타일 유지
  2. CI/CD 통합: GitHub Actions나 GitLab CI에서 스타일 검사 자동화
  3. 점진적 마이그레이션: 레거시 코드는 새 파일부터 PSR-12 적용
  4. 코드 리뷰: Pull Request에서 스타일 지적 자동화

마치며

Laravel의 PSR 코딩 표준은 팀 전체가 이해하기 쉬운 일관된 코드를 작성하도록 도와줍니다. 자동화 도구를 적절히 활용하면 개발자는 로직에만 집중할 수 있습니다. 새 프로젝트를 시작할 때 처음부터 이 규칙을 적용하면, 나중에 큰 리팩토링 비용을 절감할 수 있습니다.

댓글