네임 스페이스는 자동로드 클래스만을위한 것이 아닙니다. 또한 이름 충돌을 방지합니다. 사실, 그것이 그들의 주된 목적입니다.
User
응용 프로그램의 사용자에 대한 정보를 저장하기 위해 라는 클래스가 필요한 프로젝트가 있지만 플러그인이 User
정보를 저장하기 위해 (다른) 클래스를 사용 한다고 가정 해보십시오 . 네임 스페이스를 사용하면 하나의 네임 스페이스 (예 :) 내에서 클래스를 만들고 MyApp
플러그인에서 다른 네임 스페이스 ( CoolPlugin
)를 사용할 수 있습니다. MyApp
공간 내의 코드 는 단지 User
(예를 들어 new User();
)를 참조 할 수 있으며 , 따라서 CoolPlugin
공간 에서의 코드는 가능하다; 각각 예상 결과를 얻습니다. 다른 네임 스페이스의 코드를 사용해야 할 경우 접두사 만 붙입니다. 예를 들어, CoolPlugin
공간의 코드는 다음 User
을 MyApp
통해 클래스에 액세스 할 수 있습니다.new \MyApp\User();
대안은 모든 클래스가 복잡한 이름을 필요로한다는 것이다 사방에 같은 class MyApp_User
과 class CoolPlugin_User
. 네임 스페이스를 사용하면 대부분의 시간을 단순화하고 항상 이름 충돌을 피할 수 있습니다.
편집 : "둘 사이에 성능 차이가 있습니까?"라는 질문에 대답하기 위해
의미있는 사람이 아닙니다. 벤치마킹하지는 않았지만 나노초 수준에는 차이가있을 수 있습니다. 즉, 초소형 성능 조정을 위해 코드 품질을 희생하는 것은 좋은 전략이 아니므로 네임 스페이스를 사용하지 않아야합니다. 비슷한 종류의 문제에 대한 벤치 마크는 PHPbench.com 및 이 StackOverflow 답변을 참조하십시오 .
코드는 할 필요가 믿을 수 없을만큼 꽉 매우는 시간에 민감한 당신은 상황의이 종류를 마이크로 최적화에 대해 걱정할 필요가 전에 (고주파 거래 또는 핵 반응을 관리하는 생각). 실제로 시간에 민감하다면 PHP와 같이 해석되는 언어가 아닌 c 또는 assembly 로 코딩해야합니다 .