PHP 네임 스페이스 평가


11

저는 오픈 소스 PHP 프로젝트의 시험판 단계에 있으며 다른 개발자들이 자신의 프로젝트에서 사용하기를 희망합니다. 프로젝트는 현재 네임 스페이스를 지원하지 않으며 네임 스페이스 또는 Dir_Subdir_Class의 PEAR 명명 규칙을 사용 해야하는지 평가하려고합니다. 솔직히 말하면 쉬운 선택은 아닙니다.

네임 스페이스에 대한 몇 가지 고려 사항 :

  • 내 프로젝트가 다른 유사한 프로젝트보다 간단한 API를 제공하여 차별화하는 방법 중 하나입니다. 네임 스페이스는 새롭고 PEAR 명명 규칙보다 복잡하기 때문에 코드베이스에 도입하면 프로젝트를 덜 간단하게 사용할 수 있습니다. 그것들을 구현함으로써 사용 편의성 측면에서 약간의 차이점을 잃습니다.
  • 네임 스페이스에 대한 이점을 볼 수는 있지만 PEAR 명명 규칙을 사용하는 최신 PHP 제품에서 해결 해야하는 문제는 해결하지 못하는 것 같습니다. 존재하지 않는 경우 내 프로젝트를 사용하는 동안 이름 충돌이 최소화되어야합니다.
  • 기사 는 구현이 별보다 덜하기 때문에 네임 스페이스 채택에 약간의 일시 중지를 제공합니다.
  • 나는 또한 어디에도 가지 않을 수있는 악 대차를 타고 주저합니다. 네임 스페이스는 PHP의 새로운 기능이므로 아직 네임 스페이스가 될 것이라고 확신하지는 않습니다.
  • 적합성. 지금까지 작성된 거의 모든 PHP 코드는 새로운 기능이므로 네임 스페이스를 사용하지 않습니다. 다른 라이브러리는 변환없이 호환되지 않습니다.

네임 스페이스 사용에 대한 몇 가지 사항 :

  • 지각. 네임 스페이스가 표준이되고 모범 사례가된다면 내 프로젝트는 전문성이없고 쓸모없는 것으로 간주 될 수 있습니다.
  • 경쟁. 경쟁하는 일부 PHP 프로젝트는 최신 버전에서 네임 스페이스를 사용하기 시작했지만 아직 많은 사람들이 도약하지 않았습니다. 그렇게하면 내 프로젝트가 다른 프로젝트에 도움이 될 수 있습니다.
  • 프로젝트가 공개되기 전에 지금보다 전환을하게되면 향후 작업이 더 쉬워 질 것입니다.
  • 모범 사례를 지원하고 싶습니다. 네임 스페이스가 PHP에 대한 모범 사례가되면 프로젝트에서이를 활용해야합니다.

내가 알 수있는 것 중 하나를 선택해야합니다. 둘 다 할 수는 없습니다. 내가 고려하지 않은 점이 있습니까? PHP의 전문 표준이되는 네임 스페이스를 향하거나 반대하는 객관적인 징후 (화염 전은 아님)가 있습니까? 곧 결정을 내리기 위해 기꺼이 공유하고자하는 통찰력이나 자료에 감사드립니다.

답변:


5

PHP에서 네임 스페이스가 유지된다는 두 가지 징후가 있습니다.

  1. PEAR 이름 지정 체계는 PEAR2 의 네임 스페이스를 선호하여 포기되었습니다 .
  2. Zend Framework 2.0의 명시된 목표 중 하나는 무엇보다도 네임 스페이스를 완전히 활용함으로써 PHP 5.3 사용법의 모범이 되는 것입니다. 필자는 Zend가 네임 스페이스에 전적으로 헌신하고 있으며이를 지속적으로 지원하고 발전시켜 나갈 것임을 강력하게 지적합니다.

나는 네임 스페이스의 현재 구현이 부족하다는 것을 전적으로 동의하지만, 네임 스페이스 사용에 대한 당신의 주장은 그렇게 견고하지 않습니다. 현재 형식에서도 네임 스페이스는 다음을 제공합니다.

  • 더 나은 코드 구성
  • 명명 충돌 방지
  • 클래스, 함수 및 상수에 대한 컨텍스트

PHP 네임 스페이스에 대한 대부분의 주장은 다른 언어로 구현 한 것과 비교 한 것이며 기능으로서의 실제 장점과는 대조적입니다.


링크는 +1입니다. 더 나은 코드 구성 및 컨텍스트 포인트를 확장 할 수 있습니까? 더 나은 코드 구성을 제공하는 방법을 이해하는 데 약간의 어려움이 있습니다. 대부분의 프로젝트는 PEAR 이름 지정 체계에서 사용하는 것과 동일한 논리 디렉토리로 그룹화 된 파일 구조에 1 : 1 클래스를 사용하는 것으로 보입니다. ZF2조차도 대부분의 경우 동일한 디렉토리 및 파일 구조를 사용하는 것처럼 보이지만 지금은 네임 스페이스를 사용합니다. 그것은 다르지만, 처음에는 잘 알려진 디렉토리와 파일보다 그것이 더 낫거나 더 잘 구성되어 있는지 반드시 알 필요는 없습니다.
VirtuosiMedia

컨텍스트 포인트에 문제가 있습니다. 무엇이든 네임 스페이스는 컨텍스트를 제거하는 대신 컨텍스트를 제거하여보다 간결한 코딩 스타일을 갖습니다. 예를 들어, 파일에서 새 클래스를 인스턴스화하는 경우 이제 클래스 이름에서 즉시 명백하게 보이기보다는 네임 스페이스가 선언 된 위치를 찾아서 어떤 클래스를 찾아야하는지 알아야합니다. 내가 빠진 것이 아니라면 네임 스페이스가 덜 장황하지만 명확성을 희생하는 것처럼 보입니다.
VirtuosiMedia

@VirtuosiMedia PEAR와 기존 ZF 이름 지정 체계 네임 스페이스를 에뮬레이트 하므로 내 세 가지 점은 다소 그들도 마찬가지. 내가 지적하려고하는 것은 현재 PHP 네임 스페이스 구현에서 그 점이 사실이라면 작은 snafus로는 충분하지 않다는 것입니다. 함께 더 나은 코드 구성 나는 당신의 클래스에 대한 합리적, 논리적 구조 및 계층 구조, 네임 스페이스없이 물론 가능의 무언가를 채택, 파일을 통해 주로 의미한다. 그러나 네임 스페이스 (및이를 에뮬레이트 하는 체계 )는 한 번에 세 지점을 모두 달성하는 데 도움이되는 기능입니다.
yannis

알았어 설명 주셔서 감사합니다. 에뮬레이션 된 네임 스페이스에 비해 실제 네임 스페이스에서 상당한 이점이 있습니까?
VirtuosiMedia

1
@VirtuosiMedia 질문에 네임 스페이스를 사용하는 데 필요한 모든 사항이 유효합니다. 여기에 PHP 네임 스페이스를 사용하면 코드가 다른 배경을 가진 코더에게 조금 더 자연스럽게 느껴질 수 있습니다. 큰 프로젝트에서는 매우 귀중 할 수 있습니다. 또한 에뮬레이트 된 네임 스페이스에 대한 표준은 없습니다. 대부분의 네임 스페이스는 거의 동일하지만 실제 네임 스페이스를 사용하면 모든 사람이 동일한 스키마를 사용하게됩니다. BTW에는 네임 스페이스가 있습니다 를 사용하여 코드의 이름을 지정할 수 있습니다.
yannis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.