PHP PSR 시리즈 사양의 내용은 무엇입니까?

WBOY
풀어 주다: 2016-08-08 09:30:37
원래의
683명이 탐색했습니다.

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로 대체됩니다. 그 내용은 매우 간결합니다.

내용:

  1. 정규화된 네임스페이스와 클래스 이름은 다음과 같은 구조를 가져야 합니다. "<Vendor Name>(<Namespace>)*<Class Name>"
  2. 각 네임스페이스에는 최상위 네임스페이스("공급업체 이름")가 있어야 합니다.
  3. 각 네임스페이스는 개수에 제한 없이 하위 네임스페이스를 가질 수 있습니다
  4. 각 네임스페이스는 파일 시스템에서 로드될 때 "운영 체제 경로 구분 기호"(DIRECTORY_SEPARATOR)로 변환되어야 합니다.
  5. "클래스 이름"의 각 "_" 문자는 DIRECTORY_SEPARATOR로 변환됩니다. "_" 기호는 네임스페이스에서 명확한 의미가 없습니다.
  6. 네이밍 표준을 준수하는 네임스페이스 및 클래스 이름은 ".php"로 끝나야 파일을 로드할 수 있습니다
  7. Vendor Name 네임스페이스와 클래스 이름은 대문자와 소문자로 구성될 수 있으며, 네임스페이스와 클래스 이름은 다중 시스템 호환성을 보장하기 위해 대소문자를 구분합니다

PSR-1(기본 코딩 표준)

PSR-1은 기본 코딩 표준입니다(원문: 공식 홈페이지, GitHub). 클래스 파일의 명명 방법, 클래스 이름, 클래스 메소드 이름 등 내용이 간결한가?

내용:

  1. 소스 파일은

  2. 소스 파일의 PHP 코드 인코딩 형식은 BOM 없이 UTF-8만 사용해야 합니다

  3. 소스 파일은 선언(클래스, 함수, 상수 등)이나 부작용을 일으키는 작업(예: 정보 출력, .ini 구성 파일 수정 등)에만 사용하는 것이 좋지만, 두 가지를 동시에 수행하면 안 됩니다.

  4. 네임스페이스와 클래스는 PSR-0 표준을 준수해야 합니다

  5. 클래스 이름은 StudlyCaps를 사용하여 작성해야 합니다

  6. 클래스의 상수는 대문자와 밑줄(_)로만 구성되어야 합니다.

  7. 메소드 이름은 cameCase로 작성해야 합니다

PSR-2(코딩 스타일 가이드)

PSR-2는 코딩 스타일 표준입니다(원문: 공식 홈페이지, GitHub). 내용은 약간 더 많지만 여전히 상대적으로 간결합니다. 이는 PSR-1을 기반으로 하며 들여쓰기, 각 코드 줄의 길이, 줄 바꿈, 메서드 가시성 선언, 공백 및 메서드 본문 중괄호 래핑에 대한 관련 조항을 포함합니다.

표준 콘텐츠:

  1. 코드는 PSR-1을 준수해야 합니다

  2. 탭 대신 공백 4개를 사용하여 코드를 들여쓰기해야 합니다

  3. 코드 줄 길이에는 엄격한 제한이 있어서는 안 됩니다. 소프트 제한은 120자여야 하며, 각 코드 줄은 80자 이하여야 합니다.

  4. 네임스페이스 선언 아래에 빈 줄이 있어야 하고, 사용 선언 아래에도 빈 줄이 있어야 합니다

  5. 클래스의 왼쪽 중괄호는 선언 아래의 한 줄에 배치되어야 하고, 오른쪽 중괄호는 클래스 본문 아래의 한 줄에 배치되어야 합니다

  6. 메서드의 왼쪽 중괄호는 선언 아래 자체 줄에 배치되어야 하고, 오른쪽 중괄호는 메소드 본문의 다음 줄에 배치되어야 합니다

  7. 모든 속성과 메서드에는 가시성 선언이 있어야 합니다. 추상 및 최종 선언은 가시성 선언 앞에 있어야 하며 정적 선언은 가시성 선언 뒤에 있어야 합니다.

  8. 구조 제어 키워드 뒤에는 공백이 있어야 하며, 메서드 및 함수 호출 뒤에는 공백이 없어야 합니다.

  9. 구조 제어의 왼쪽 중괄호는 같은 줄에, 오른쪽 중괄호는 구조 제어 코드 본문의 다음 줄에 배치해야 합니다

  10. 제어 구조의 왼쪽 괄호 뒤에는 공백이 없어야 하며, 오른쪽 괄호 앞에는 공백이 없어야 합니다

PSR-3(로거 인터페이스)

PSR-3은 인터페이스를 통한 애플리케이션 로그 클래스 정의입니다(원문: 공식 홈페이지, GitHub). 내용은 매우 간단합니다. 단지 공식 샘플 코드를 인용하면 됩니다. 물론 특정 애플리케이션에서는 이 인터페이스를 따르면 해당 구현을 확실히 사용자 정의할 수 있습니다.

기본 콘텐츠:

  1. LoggerInterface는 8가지 수준의 로그(디버그, 정보, 알림, 경고, 오류, 심각, 경고, 긴급)를 기록하기 위한 8개의 인터페이스를 노출합니다.

  2. 아홉 번째 방법은 로그 수준을 첫 번째 매개변수로 받아들이는 log입니다. 로그 수준 상수를 사용하여 이 메서드를 호출하면 지정된 수준 메서드를 직접 호출하는 것과 동일한 결과가 나와야 합니다. 이 사양에 정의되지 않았고 구현에 알려지지 않은 로그 수준으로 이 메서드를 호출하면 PsrLogInvalidArgumentException이 발생해야 합니다. 현재 클래스 라이브러리가 이를 지원하는지 확실하지 않은 경우 사용자 정의 로그 수준을 사용하지 않는 것이 좋습니다.

PSR-4(자동 로딩 개선)

PSR-4는 자동 로딩 사양을 개선한 버전입니다. (원문: 공식 홈페이지, GitHub) PSR-0 사양의 후속 제품입니다. PSR-0을 포함한 다른 자동 로딩 사양과 호환됩니다.

내용:

  1. "클래스"라는 용어는 클래스, 인터페이스, 특성 및 기타 유사한 구성을 포함하는 일반적인 용어입니다.
  2. 정규화된 클래스 이름은 다음 예와 유사해야 합니다. ()*

    1. 정규화된 클래스 이름에는 최상위 네임스페이스(공급업체 이름)가 있어야 합니다.

    2. 정규화된 클래스 이름은 여러 개의 하위 네임스페이스를 가질 수 있습니다

    3. 정규화된 클래스 이름에는 종료 클래스 이름이 있어야 합니다

    4. 밑줄은 정규화된 클래스 이름에서 특별한 의미가 없습니다

    5. 문자는 정규화된 클래스 이름에서 대문자와 소문자의 조합이 가능합니다

    6. 모든 클래스 이름은 대소문자를 구분하여 인용해야 합니다

  3. 정규화된 클래스 이름에서 파일을 로드하는 경우:
    1. 정규화된 클래스 이름에서 하나 이상의 기본 디렉터리에 해당하는 하나 이상의 연속된 하위 네임스페이스(최상위 네임스페이스 구분 기호 제외)로 구성된 네임스페이스 접두사

    2. "네임스페이스 접두사" 뒤의 연속적인 하위 네임스페이스 이름은 "기본 디렉터리" 아래의 하위 디렉터리에 해당합니다. 여기서 네임스페이스 구분 기호는 디렉터리 구분 기호를 나타냅니다. 하위 디렉터리 이름은 하위 네임스페이스 이름의 대소문자와 일치해야 합니다

    3. 종료 클래스 이름은 .php로 끝나는 파일에 해당합니다. 파일 이름은 종료 클래스 이름의 대소문자와 일치해야 합니다

  4. 자동 로더 구현 시 예외가 발생하거나 어떤 수준의 오류도 발생해서는 안 되며 값을 반환해서는 안 됩니다.

참고: 특정 사양 내용은 다른 중국어 번역 버전을 참조하여 작성되었습니다.

이상은 PHP의 PSR 사양 시리즈의 내용과 그 내용을 소개한 것입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!