왜 Underscore가 PSR-0 표준에서 디렉토리 구분 기호로 변환 된 이유는 무엇입니까?

StackOverflow https://stackoverflow.com//questions/11696219

  •  12-12-2019
  •  | 
  •  

문제

PSR-0 ( https ://github.com/php-fig/fig-tephards/blob/master/accepted/psr-0.md ) 표준 해당 파일의 디렉터리 별도로로 클래스 이름을 변환해야 함을 지정합니다.이름.

나 에게이 표준을 알지 못하는 사람이 클래스 이름에서 밑줄을 무시하게 사용하지 않는 사람이 그리고 갑자기 오토로더가 클래스와 모든 종류의 이상한 오류를 찾을 수 없을 때 많은 오류가 발생할 때 많은 오류가 발생하는 것처럼 보입니다.나타납니다 (예 : symmony2.1 매핑 오류 : class_parents () )

이 "기능"에 대해 어떤 종류의 이성도 (일부 도서관과의 역사적 호환성)가 있어야합니다.내 질문은 다음과 같습니다. 왜이 이유가 PSR-0 표준에서 소개 된 이유를 알고 있습니까?

도움이 되었습니까?

해결책

밑줄은 PHP가 아직 네임 스페이스를 지원하지 않은 시간에 사용되었습니다."올바른"조직 된 프로젝트는 디렉토리 구조와 동일한 방식으로 파일의 네임 스페이스 규칙을 따릅니다.

프로젝트에서 파일을 구성하는 일반적인 "규칙"입니다.

디렉토리 구조가있는 경우 :

root
  Name
    Package
      MyClass.php
.

used 님이 사용했습니다 :

class Name_Package_MyClass {}
.

그러나 이제는 네임 스페이스가 있으므로 다음이됩니다.

namespace Name\Package;

class MyClass { }
.

모든 사람들이 똑같은 것을 수행하는 것을 보장하는 스타일 가이드 라인을 코딩하는 것입니다.

그래서 PSR-0은 이전과 새 스타일의 새 스타일을 파일 이름으로 맵핑하는 것입니다.

다른 팁

PHP는 네임 스페이스를 지원합니다. 버전 5.3 이후 가장 먼저 가장 일반적인 규칙은 네임 스페이스 (디렉토리) 구분 기호로 밑줄을 사용하는 것이 었습니다. 예 : My_Project_ClassName/path/to/my/My/Project/ClassName로 매핑되었습니다.나는 거꾸로 호환성이 주된 이유라고 믿습니다.

PSR-0 표준은 몇 가지 특정 프로젝트를 위해 작성되었으며 반드시 자신의 프로젝트에 가장 적합한 옵션은 아닙니다.그들의 사이트에서 말했듯이 : "다른 사람들이 우리가하고있는 일을 채택하고 싶다면 그들은 그렇게하기를 환영합니다. 그러나 그것은 목표가 아닙니다."PSR-0은 매우 제한적이며 다른 사람들이 있기 때문에 사용하지 않을 것입니다.귀하의 프로젝트에서 실제로 원하는 것을 고려하고 그것이 당신에게 유익 할 것인지 여부를 고려하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top