본문 바로가기

개발/PHP

PSR-0, PSR-1, PSR-2 (PHP Standards Recommendations)

PSR(PHP Standards Recommendations)는 PHP의 표준 규약을 의미한다.

PHP-FIG(PHP-FrameWork InteropGroup)에서 만든 표준 권고안이다.

 

1. PSR-0 Autoloading Standard

2014-10-21 기준으로 사용 중단, PSR-4 사용 권장.

오토로더 상호 운용성을 위해 반드시 준수해야하는 필수 요구사항에 대해 설명.

 

정규화된 네임스페이스 및 클래스는 다음과 같은 구조를 따라야 합니다.
\<Vendor Name>\(<Namespace>\)*<Class Name>
각 네임스페이스의 최상위 네임스페이스에는 공급자(Vendor)의 이름을 사용해야 합니다.
각 네임스페이스는 원하는 만큼의 하위 네임스페이스를 가질 수 있습니다.
각 네임스페이스의 구분기호는 DIRECTORY_SEPARATOR로 변환됩니다.
CLASS 이름에서 각 _ 문자는 DIRECTORY_SEPARATOR로 변환됩니다. _는 네임스페이스에서 특별한 의미가 없습니다.
규칙에 맞게 작성된 클래스를 파일시스템에서 불러올 때 .php가 마지막에 붙습니다.
공급자(Vendor) 이름, 네임 스페이스 및 클래스 이름의 알파벳 문자는 소문자와 대문자의 조합으로 구성 될 수 있습니다.

 

Example)

\Doctrine\Common\IsolatedClassLoader => /path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php
\Symfony\Core\Request => /path/to/project/lib/vendor/Symfony/Core/Request.php
\Zend\Acl => /path/to/project/lib/vendor/Zend/Acl.php
\Zend\Mail\Message => /path/to/project/lib/vendor/Zend/Mail/Message.php

\namespace\package\Class_Name => /path/to/project/lib/vendor/namespace/package/Class/Name.php
\namespace\package_name\Class_Name => /path/to/project/lib/vendor/namespace/package_name/Class/Name.php

 

2. PSR-1 Basic Coding Standard

공유 PHP 코드 간 기술적 상호 운용성의 보장을 위한 표준 코딩 요소이다.

 

- 반드시 <?php 및 <?= 태그만 사용해야 합니다.

- 반드시 BOM없이 UTF-8로만 코드를 작성해야 합니다.

- 선언하거나 사이드 이펙트의 원인이 되는 형태로 작성해야 하지만, 둘 다 수행하면 안됩니다.

- 네임스페이스와 클래스는 반드시 autoloading에 관한 PSR(PSR-0, PSR-4)을 따라 작성해야 합니다.

- Class는 반드시 StudlyCaps에 따라 작성해야 합니다. (단어의 첫글자를 대문자로 작성)

- Class의 상수는 반드시 전부 대문자와 밑줄(_)로 작성해야 합니다.

- Method는 반드시 camelCase로 작성해야 합니다. (단어의 첫글자를 대문자로 표시하되, 이름의 첫 문자는 소문자로 적는다. lowerCamelCase)

 

3. PSR-2 Coding Style Guide

2019-08-10 기준으로 사용 중단, PSR-12 사용 권장.

PSR-1을 확장한다.

PHP 코드의 형식을 지정하는 여러가지 규칙과 기대 사항으로 다른 작성자의 코드를 볼 때 가독성을 해치는 것을 줄인다.

 

- 코드는 반드시 PSR-1을 따라야 합니다.

- 코드는 반드시 스페이스 4칸을 사용해야 합니다.

- 한줄에 들어가는 문자열의 길이에 엄격한 제한이 있어서는 안됩니다. 

가벼운 제한은 한줄에 120자 입니다. 가능하다면 한줄은 80자 이하여야 합니다.

- namespace 선언 다음에 빈 줄이 하나 반드시 있어야 하며 use 선언 블록 뒤에 반드시 빈줄이 하나 있어야 합니다.

- 클래스의 여는 중괄호는 다음 줄로 가야 하며, 닫는 중괄호는 분문 뒤의 다음 줄로 가야합니다.

- 메서드의 여는 중괄호는 다음 줄로 가야 하며, 닫는 중괄호는 본문 뒤의 다음 줄로 가야합니다.

- 모든 속성 및 메서드에서 반드시 가시성을 선언해야 합니다.

abstract와 final은 반드시 가시성 전에 선언되어야 합니다.  

static은 반드시 가시성 뒤에 선언되어야 합니다.

- 제어문 키워드는 반드시 그 뒤에 하나의 공백을 가져야 합니다. (메서드, 함수 X)

제어문을 여는 중괄호는 반드시 같은 줄에 있어야 하며 닫는 중괄호는 반드시 본문 뒤의 다음 줄로 가야 합니다.

- 제어문을 여는 괄호는 반드시 그 뒤에 공백이 없어야 하며 제어문에 대한 닫는 괄호 전에는 반드시 공백이 없어야만 합니다.

 

# 참고 자료 

www.php-fig.org/psr/

 

'개발 > PHP' 카테고리의 다른 글

502 Bad Gateway PHP-FPM 최적화  (0) 2022.02.25
Secure Coding - SQL Injection  (0) 2021.01.08
PHP 7 엄격한 타이핑 (strict mode)  (0) 2020.09.07
PHP CI Chunk File Upload - Plupload  (0) 2020.06.05