- “class” 라는 용어는 class, interface, trait 등의 기타 유사한 구조를 말한다
- 정규화 된 클래스 이름의 형식
- \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
- 정규화 된 class 이름은 NamespaceName(공급자 네임스페이스) 라고하는 최상위 네임스페이스를 가져야한다. 회사명 아이디등 주로 사용한다. (MUST)
- 정규화 된 class 이름은 하나 이상의 SubNamespaceNames를 가질 수 있다.(MAY)
- 정규화 된 class 이름은 마지막 클래스 이름(terminating class name)을 가져야 한다.(MUST)
- 밑줄(_)은 정규화 된 클래스 이름의 어느 부분에도 특별한 의미가 없다.
- 정규화 된 클래스 이름의 알파벳 문자는 대소문자의 조합 일 수 있다 (MAY)
- 모든 클래스 이름은 대소문자를 구분하여 참조해야한다.(MUST)
- 정규화 된 class 이름에 해당하는 파일을 로드 할때
FULLY QUALIFIED CLASS NAME | NAMESPACE PREFIX | BASE DIRECTORY | RESULTING FILE PATH |
\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 |
- 정규화 된 클래스 이름에서 선행 네임 스페이스 구분 기호(”)를 포함하지 않는 하나 이상의 상위 네임스페이스와 하위 네임스페이스로 구성된 (“namespace prefix”)는 적어도 하나의 base directory에 “대응”한다.
Acme\Log\Writer : ./acme-log-writer/lib/ - “Namespace prefix” 다음에 이어지는 하위 네임스페이스 이름은 “base directorty” 내의 하위 디렉토리에 해당하며 네임스페이스 구분 기호는 디렉토리 구분 기호를 나타낸다. 하위 디렉토리 이름은 하위 네임스페이스 이름의 대소문자와 일치해야 한다.
\Aura\Web\Response\Status : /path/to/aura-web/src/Response/Status.php - 마지막에 존재하는 class이름은 .php 로 끝나는 파일 이름과 같아야 한다.
\Aura\Web\Response\Status : /path/to/aura-web/src/Response/Status.php