2011-11-08 2 views
1

이것은 약간 구체적인 내용이지만 어떤 PHP 라이브러리에도 적용하기에 충분히 일반적입니다.실용적인 PHP 네임 스페이스 솔루션은 무엇입니까?

WordPress 3.2.1 또는 이전 버전 (PHP 코드베이스, PHP5 W/O 이름 공간 사용 가능)) ... 몇 가지 클래스 이름 (WPAlchemy_MetaBox, WPAlchemy_MediaAccess)을 사용하여 작은 PHP 라이브러리를 만들었습니다 ... 개발자는 WordPress가 많은 환경 (같은 환경에서)을 가질 수있는 플러그인/테마의 클래스를 사용하기 시작했습니다. 라이브러리를 사용하는 두 개 이상의 플러그인 가능성이 있습니다 (충돌이 클래스 이름과 함께 발생할 수 있음)

현재 각 릴리스에는 버전 번호 또는 고유 한 클래스 이름이있을 수 있다고 생각합니다. 나는 이걸 조금 추상화 할 수있어. 어떤 종류의 간단한 로더 (단순함을 위해).

위의 해결 방법을 모색하고 싶습니다.

을 원하는 경우 추가로 질문을 바꾸어 말하다 주시기 바랍니다이 알려 주시기 바랍니다 해결 다른 SO 게시물이있을 경우 개발자가 특정 버전을 사용할 수 있도록 이름 충돌을 방지 추가 탄환 포인트 목표.

답변

0

충돌을 방지하려면 오토로더를 사용하십시오 (spl_autoload_register 참조). 따라서 라이브러리를 공유하고 각 공유자가 오토로더를 사용하면 클래스 이름 충돌 (재 선언 클래스 치명적 오류)이 더 이상 발생하지 않습니다.

이 문제는 버전 문제를 해결하지 못합니다 (예 : 같은 제품군의 다른 클래스를 사용하지만 버전이 다를 수 있음).

하나의 간단한 솔루션 (자동 로더와 결합)은 라이브러리를 플러그인으로 제공하는 것입니다. 라이브러리가 업데이트 될 때마다 플러그인을 업데이트하십시오. 플러그인은 오토로더와 클래스만을 제공합니다.

라이브러리를 사용하려는 다른 플러그인은 라이브러리 플러그인을 종속성으로 설정해야합니다. 그것을 검사하고 사용자에게 사용 가능하지 않다면 설치하도록 지시하거나 자동으로 설치하도록 알려줍니다.

데모 (SDK)를 위해 샘플 플러그인을 제공하는 경우 많은 사용자가 채택 할 것으로 생각합니다.