PHP 스타일 가이드: 괄호와 중괄호 사용 규칙
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

PHP 스타일 가이드 제안: 괄호와 중괄호 사용 규칙

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

PHP 개발자 및 팀 협업 환경에서 작업하는 개발자

  • 난이도: 중간 (기본 문법 이해 필요)

핵심 요약

  • 일관된 문법: if($x) { ... }foo($y) { ... }처럼 괄호 앞 공백 없음
  • 중괄호 위치: 조건문/함수 정의 시 중괄호는 줄내림 없이 줄 시작 (if($x) { ... })
  • 예외 제거: if/elsetry/catch 블록은 이전 블록의 중괄호 끝 뒤에 새 줄 사용 (if($x) { ... } else { ... })
  • 자동화 도구 호환성: PHP-CS-Fixer와 같은 도구와 완전 호환

섹션별 세부 요약

1. 서론: 문법의 목적과 원칙

  • 문법의 목적: 코드가 논리 구조를 반영하도록 하기 위해 기존 전통적 규칙 대신 구문 기반의 일관된 규칙 제안
  • 핵심 원칙:

- if, while, foo() 등의 구문 유형별로 괄호 사용 규칙 동일

- 중괄호 {}블록 범위 지정자로, 문맥에 관계없이 일관된 위치 적용

  • 문제점: PSR-12 등 기존 가이드에서 iffoo()다른 공백 규칙 적용 → 불필요한 인지 부하 유발

2. 기존 가이드의 문제점

  • 구문 유사성 vs. 형식 차이:

- function foo() { ... } (함수 정의) vs. if ($x) { ... } (조건문) → 다른 줄 바꿈 규칙

- 문법적 필요성 없이 형식 차이 적용 → 자동화 도구 복잡화, 협업 시 스타일 논쟁 유발

  • 예시:

```php

// PSR-12 기준

function foo() {

// ...

}

if ($x) {

// ...

}

```

3. 제안된 규칙

  • 괄호 사용:

- 모든 구문에 공백 없음: if($x), foo($z)

- 중괄호 위치: 조건문/함수 정의 시 줄 시작에 배치 (if($x) { ... })

- 중괄호 종료: 줄 끝에만 배치, 블록 시작 위치와 수직 정렬

  • 예시:

```php

if($x) {

// ...

} else {

// ...

}

```

4. 특별한 경우: `if/else` 및 `try/catch`

  • 기존 스타일:

```php

if($x) {

// ...

} elseif($y) {

// ...

}

```

  • 제안된 변경:

- if/else 블록은 이전 중괄호 끝 뒤에 새 줄 사용 → 수직 구조 확보

- 예외 제거: 모든 블록(if, else, try, catch)은 이전 블록의 중괄호 끝 뒤에 새 줄 사용

5. PHP 7.4 이후 구문: `fn`

  • 규칙:

- fn( 사이 공백 금지: $f = fn($x) => $x + 1;

- 중괄호 제외: 표현식 수준 구문 → 표현식 포맷 가이드 적용

  • 예시:

```php

$result = $x > 0 ? 'positive' : 'negative';

$message = ($x > 0) ? ($x > 10 ? 'large' : 'small') : 'zero';

```

결론

  • 개인 개발자: 예외 사례 줄어듬 → 논리 집중도 향상
  • 팀 협업: 코드 리뷰 갈등 감소, 일관된 규칙 공유
  • 자동화 도구 호환: PHP-CS-Fixer 등과 완전 호환 → 유지보수 효율성 향상

> 핵심 팁: if/else 블록은 이전 중괄호 끝 뒤에 새 줄 사용, fn( 사이 공백 금지.