이 문서의 키워드 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL"은 RFC 2119에 설명된 대로 해석된다.
1 개요[ | ]
- PSR-4: Autoloader, PSR-4: Improved Autoloading
- PSR-4: 오토로더, PSR-4: 향상된 오토로딩
- 이 PSR은 파일 경로에서 클래스를 자동 로드하기 위한 사양을 설명한다.
- 완전히 상호운용 가능하며 PSR-0을 포함한 다른 자동 로딩 사양과 함께 사용할 수 있다.
- 이 PSR은 사양에 따라 자동 로드될 파일을 배치할 위치도 설명한다.
2 사양[ | ]
- 1. "클래스"라는 용어는 클래스, 인터페이스, 특성 등 유사한 구조들을 나타낸다.
- 2. 완전수식 클래스 이름의 형식은 다음과 같다.
- textCopy
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
- 1. 완전수식 클래스 이름에는 "벤더 네임스페이스"라고도 하는 최상위 네임스페이스 이름이 있어야 한다(MUST).
- 2. 완전수식 클래스 이름은 하나 이상의 하위 이름 공간 이름을 가질 수 있다(MAY).
- 3. 완전수식 클래스 이름에는 종료 클래스 이름이 있어야 한다(MUST).
- 4. 밑줄은 완전수식 클래스 이름의 어떤 부분에서도 특별한 의미가 없다.
- 5. 완전수식 클래스 이름의 알파벳 문자는 소문자와 대문자의 조합일 수 있다(MAY).
- 6. 모든 클래스 이름은 대소문자를 구분하여 참조해야 한다(MUST).
- 3. 완전수식 클래스 이름에 해당하는 파일을 로드할 때 ...
- 1. 완전수식 클래스 이름("네임스페이스 접두사")에서 선행 네임스페이스 구분 기호를 포함하지 않는 하나 이상의 선행 네임스페이스 및 하위 네임스페이스 이름의 연속 시리즈는 적어도 하나의 "베이스 디렉토리"에 해당한다.
- 2. "네임스페이스 접두어" 뒤의 인접한 하위 네임스페이스 이름은 "기본 디렉토리" 내의 하위 디렉토리에 해당하며, 여기서 네임스페이스 구분 기호는 디렉토리 구분 기호를 나타낸다. 하위 디렉토리 이름은 하위 네임스페이스 이름의 대소문자와 일치해야 한다(MUST).
- 3. 종료 클래스 이름은 .php로 끝나는 파일 이름에 해당한다. 파일 이름은 종료 클래스 이름의 대소문자와 일치해야 한다(MUST).
- 4. 오토로더 구현은 예외를 발생시키지 않아야 하고, 어떤 수준의 오류도 발생시키지 않아야 하며(MUST NOT), 값을 반환해서는 안 된다(SHOULD NOT).
3 예시[ | ]
- 아래 표는 주어진 완전수식 클래스명, 네임스페이스 접두어, 베이스 디렉토리에 따른 파일 경로를 보여준다.
완전수식 클래스명 | 네임스페이스 접두어 | 베이스 디렉토리 | 결과 파일경로 |
---|---|---|---|
\Acme\Log\Writer\File_Writer | Acme\Log\Writer | ./acme-log-writer/lib/ | ./acme-log-writer/lib/File_Writer.php |
\Aura\Web\Response\Status | Aura\Web | /path/to/aura-web/src/ | /path/to/aura-web/src/Response/Status.php |
\Symfony\Core\Request | Symfony\Core | ./vendor/Symfony/Core/ | ./vendor/Symfony/Core/Request.php |
\Zend\Acl | Zend | /usr/includes/Zend/ | /usr/includes/Zend/Acl.php |
- 사양을 준수하는 오토로더의 구현 예시는 예제 파일을 참조하자.
- 예제 구현은 사양의 일부로 간주되어서는 안 되며 언제든지 변경될 수 있다(MAY).
4 같이 보기[ | ]
5 참고[ | ]
편집자 Jmnote Jmnote bot
로그인하시면 댓글을 쓸 수 있습니다.