PSR
은 PHP Standard Recommendation의 약자로 실제로는 PSR이라고 불러야 할 것인데, 이는 일련의 권장 표준으로, 현재 통과된 사양에는 PSR-0(Autoloading Standard), PSR-1(Basic Coding Standard), PSR-2가 있습니다. (코딩 스타일 가이드) ), PSR-3(로거 인터페이스), PSR-4(향상된 자동 로딩). 이는 공식 PHP 표준은 아니지만 Zend 및 Symfony2와 같은 잘 알려진 PHP 프로젝트에서 추출한 일련의 표준으로 현재 점점 더 많은 커뮤니티 프로젝트가 회원으로 가입하고 이 표준을 따르고 있습니다.
PHP-FIG — PHP Framework Interoperability Group은 PSR 개발 사양을 공식화하는 조직입니다. 회원은 유명한 PHP 커뮤니티 프로젝트로 구성되어 있으며 공식 웹사이트 홈페이지 하단에서 회원 목록을 확인할 수 있습니다. 이들 회원은 사양을 개발하고 이를 프로젝트에 구현합니다.
사실 각 PSR 사양의 내용은 매우 간결하고 명확하여 수십 페이지에 달하는 사양보다 훨씬 좋습니다.
PSR-0(자동 로딩 표준)
PSR-0은 자동 클래스 로딩 사양입니다(원문: 공식 홈페이지, GitHub). 2014-10-21 현재 이 사양은 더 이상 사용되지 않는 것으로 표시되고 PSR-4로 대체됩니다. 그 내용은 매우 간결합니다.
내용:
Vendor Name
>(<Namespace
>)*<Class Name
>"Vendor Name
네임스페이스와 클래스 이름은 대문자와 소문자로 구성될 수 있으며, 네임스페이스와 클래스 이름은 다중 시스템 호환성을 보장하기 위해 대소문자를 구분합니다PSR-1(기본 코딩 표준)
PSR-1은 기본 코딩 표준입니다(원문: 공식 홈페이지, GitHub). 클래스 파일의 명명 방법, 클래스 이름, 클래스 메소드 이름 등 내용이 간결한가?
내용:
소스 파일은
소스 파일의 PHP 코드 인코딩 형식은 BOM 없이 UTF-8만 사용해야 합니다
소스 파일은 선언(클래스, 함수, 상수 등)이나 부작용을 일으키는 작업(예: 정보 출력, .ini 구성 파일 수정 등)에만 사용하는 것이 좋지만, 두 가지를 동시에 수행하면 안 됩니다.
네임스페이스와 클래스는 PSR-0 표준을 준수해야 합니다
클래스 이름은 StudlyCaps를 사용하여 작성해야 합니다
클래스의 상수는 대문자와 밑줄(_)로만 구성되어야 합니다.
메소드 이름은 cameCase로 작성해야 합니다
PSR-2(코딩 스타일 가이드)
PSR-2는 코딩 스타일 표준입니다(원문: 공식 홈페이지, GitHub). 내용은 약간 더 많지만 여전히 상대적으로 간결합니다. 이는 PSR-1을 기반으로 하며 들여쓰기, 각 코드 줄의 길이, 줄 바꿈, 메서드 가시성 선언, 공백 및 메서드 본문 중괄호 래핑에 대한 관련 조항을 포함합니다.
표준 콘텐츠:
코드는 PSR-1을 준수해야 합니다
탭 대신 공백 4개를 사용하여 코드를 들여쓰기해야 합니다
코드 줄 길이에는 엄격한 제한이 있어서는 안 됩니다. 소프트 제한은 120자여야 하며, 각 코드 줄은 80자 이하여야 합니다.
네임스페이스 선언 아래에 빈 줄이 있어야 하고, 사용 선언 아래에도 빈 줄이 있어야 합니다
클래스의 왼쪽 중괄호는 선언 아래의 한 줄에 배치되어야 하고, 오른쪽 중괄호는 클래스 본문 아래의 한 줄에 배치되어야 합니다
메서드의 왼쪽 중괄호는 선언 아래 자체 줄에 배치되어야 하고, 오른쪽 중괄호는 메소드 본문의 다음 줄에 배치되어야 합니다
모든 속성과 메서드에는 가시성 선언이 있어야 합니다. 추상 및 최종 선언은 가시성 선언 앞에 있어야 하며 정적 선언은 가시성 선언 뒤에 있어야 합니다.
구조 제어 키워드 뒤에는 공백이 있어야 하며, 메서드 및 함수 호출 뒤에는 공백이 없어야 합니다.
구조 제어의 왼쪽 중괄호는 같은 줄에, 오른쪽 중괄호는 구조 제어 코드 본문의 다음 줄에 배치해야 합니다
제어 구조의 왼쪽 괄호 뒤에는 공백이 없어야 하며, 오른쪽 괄호 앞에는 공백이 없어야 합니다
PSR-3(로거 인터페이스)
PSR-3은 인터페이스를 통한 애플리케이션 로그 클래스 정의입니다(원문: 공식 홈페이지, GitHub). 내용은 매우 간단합니다. 단지 공식 샘플 코드를 인용하면 됩니다. 물론 특정 애플리케이션에서는 이 인터페이스를 따르면 해당 구현을 확실히 사용자 정의할 수 있습니다.
기본 콘텐츠:
LoggerInterface는 8가지 수준의 로그(디버그, 정보, 알림, 경고, 오류, 심각, 경고, 긴급)를 기록하기 위한 8개의 인터페이스를 노출합니다.
아홉 번째 방법은 로그 수준을 첫 번째 매개변수로 받아들이는 log입니다. 로그 수준 상수를 사용하여 이 메서드를 호출하면 지정된 수준 메서드를 직접 호출하는 것과 동일한 결과가 나와야 합니다. 이 사양에 정의되지 않았고 구현에 알려지지 않은 로그 수준으로 이 메서드를 호출하면 PsrLogInvalidArgumentException이 발생해야 합니다. 현재 클래스 라이브러리가 이를 지원하는지 확실하지 않은 경우 사용자 정의 로그 수준을 사용하지 않는 것이 좋습니다.
PSR-4(자동 로딩 개선)
PSR-4는 자동 로딩 사양을 개선한 버전입니다. (원문: 공식 홈페이지, GitHub) PSR-0 사양의 후속 제품입니다. PSR-0을 포함한 다른 자동 로딩 사양과 호환됩니다.
내용:
이상은 PHP의 PSR 사양 시리즈의 내용과 그 내용을 소개한 것입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.