동일한 클래스를 포함하는 모듈의 다중 포함

까지

따라서 새 라이브러리 인 프로젝트에 모듈 식 코드 / 라이브러리를 포함해야합니다.

도서관 A :

a.php: class A;

라이브러리 B : (A에서 v1.0 체크 아웃)

b.php: include_once a.php; class B extends A;

라이브러리 C : (A에서 v2.0 체크 아웃)

c.php: include_once a.php; class C extends A;

도서관 D :

d.php: include_once b.php,c.php;

이것은 분명히 이름 충돌 ( cannot redeclare A)로 이어집니다 .

다른 곳에서 자주 가져 오기 때문에 두 라이브러리 중 하나를 만질 수 없습니다. 또한 결과가 다른 라이브러리가되어야하므로 중첩 된 네임 스페이스는 옵션이 아닙니다. 하지만 같은 문제를 가진 다른 프로젝트가 많이있을 것 같아요 ?? 제안 해 주셔서 감사합니다.

드미트리 솔로 구 벤코

대신 require_once 또는 include_once를 사용할 수 있습니다 include.

포함 된 클래스를 추적하고 확인하기 위해 메모리 및 처리를 사용해야하므로 성능에 영향을 미칠 수 있지만 가장 쉬운 솔루션입니다. 얼마나 많은 작업을 수행하는지는 단일 페이지로드에서 include / require_once의 수에 따라 다릅니다.

더 복잡한 것들은 클래스 자동 로더를 구현하지만 거기에 가고 싶지 않을 수도 있습니다.

편집하다--

내가 당신의 문제를 잘 이해한다면 그것은 의존성 문제입니다. 라이브러리 B와 C는 모두 A를 참조하지만 각각 다른 버전의 A를 참조합니다.이 경우 솔루션은 사소한 것이 아닙니다. require_once 또는 include_once를 사용하면 A의 처음로드 된 버전이 결정되지 않게됩니다. include를 사용하면 클래스가 중복됩니다. 이러한 기능만으로는 문제를 해결할 수 없다고 생각합니다. 해야 할 일은 라이브러리 종속성을 관리하는 것입니다.

예를 들어, 여러 버전의 클래스 라이브러리를 인식하고 가장 최근 버전을로드하는 오토로더 (이는 버전간에 역 호환성을 유지한다고 가정). 중첩 된 클래스를 사용하여 각 라이브러리의 종속성을 격리하고 독립적으로 유지할 수도 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

동일한 클래스를 포함하는 모든 요소에 .replace ()를 사용할 수 없습니다.

분류에서Dev

사용 사례에 따라 동일한 클래스에 다른 모듈 포함

분류에서Dev

다른 파일의 클래스를 기본 파일에 포함하는 방법

분류에서Dev

종속성의 클래스를 포함하는 jar 파일

분류에서Dev

클래스 파일에 다른 클래스를 포함하는 방법

분류에서Dev

다형성 클래스에 대한 포인터를 포함하는 벡터

분류에서Dev

동적 포인터를 포함하는 STL :: list <class something>의 클래스 제거

분류에서Dev

C ++는 두 개의 헤더 파일에 클래스를 포함합니다.

분류에서Dev

Linq를 사용하여 동일한 키를 포함하는 중첩 된 사전의 모든 값 획득

분류에서Dev

2 개의 다른 하위 클래스를 포함하지만 동시에는 아닌 C ++ 11 벡터

분류에서Dev

Java-동일한 파일에 2 개의 클래스를 포함하는 방법은 무엇입니까?

분류에서Dev

모듈을 포함하고 Julia의 다른 모듈 내에서 해당 함수 중 하나를 호출

분류에서Dev

메서드를 포함하여 자바 스크립트에서 한 클래스의 속성을 다른 클래스로 복사하는 방법

분류에서Dev

Ruby의 부모 클래스에서 포함 된 모듈 메서드를 상속하는 자식 클래스

분류에서Dev

중첩 모델 클래스에 모듈 메서드 포함

분류에서Dev

포함 된 모듈은 상위 클래스의 인스턴스 변수를 호출 할 수 없습니다.

분류에서Dev

다른 클래스의 객체에 대한 포인터를 취하는 멤버 함수가있는 두 클래스

분류에서Dev

URL의 일부와 특정 클래스를 포함하는 일치 링크

분류에서Dev

모든 클래스 파일을 포함하는 glob 문제

분류에서Dev

다른 개체의 슈퍼 클래스를 포함하는 개체 복사

분류에서Dev

html5 태그 (일부 클래스 포함)를 동일한 클래스의 div 태그로 변환

분류에서Dev

html5 태그 (일부 클래스 포함)를 동일한 클래스의 div 태그로 변환

분류에서Dev

Python-다른 모듈의 변수를 포함하는 목록 채우기

분류에서Dev

동일한 파일을 포함하여 HTML, CSS Navbar 항목 강조 표시는 모든 필수 페이지에 navbar를 포함합니다.

분류에서Dev

Solaris의 다중 처리 모듈을 포함한 Python 소스 (PyInstaller 사용) 고정 문제

분류에서Dev

Retrolambda를 포함하는 클래스로 분석하는 동안 Lint가 예외와 함께 충돌합니다.

분류에서Dev

Rails 모듈-테스트 중 다른 모듈 포함

분류에서Dev

StringA를 포함하는 모든 줄과 일치하지만 StringB도 포함하는 줄은 무시합니다.

분류에서Dev

컴포지션 또는 친구 클래스를 사용하여 다른 클래스의 멤버 함수를`this '클래스의 멤버 함수로 액세스

Related 관련 기사

  1. 1

    동일한 클래스를 포함하는 모든 요소에 .replace ()를 사용할 수 없습니다.

  2. 2

    사용 사례에 따라 동일한 클래스에 다른 모듈 포함

  3. 3

    다른 파일의 클래스를 기본 파일에 포함하는 방법

  4. 4

    종속성의 클래스를 포함하는 jar 파일

  5. 5

    클래스 파일에 다른 클래스를 포함하는 방법

  6. 6

    다형성 클래스에 대한 포인터를 포함하는 벡터

  7. 7

    동적 포인터를 포함하는 STL :: list <class something>의 클래스 제거

  8. 8

    C ++는 두 개의 헤더 파일에 클래스를 포함합니다.

  9. 9

    Linq를 사용하여 동일한 키를 포함하는 중첩 된 사전의 모든 값 획득

  10. 10

    2 개의 다른 하위 클래스를 포함하지만 동시에는 아닌 C ++ 11 벡터

  11. 11

    Java-동일한 파일에 2 개의 클래스를 포함하는 방법은 무엇입니까?

  12. 12

    모듈을 포함하고 Julia의 다른 모듈 내에서 해당 함수 중 하나를 호출

  13. 13

    메서드를 포함하여 자바 스크립트에서 한 클래스의 속성을 다른 클래스로 복사하는 방법

  14. 14

    Ruby의 부모 클래스에서 포함 된 모듈 메서드를 상속하는 자식 클래스

  15. 15

    중첩 모델 클래스에 모듈 메서드 포함

  16. 16

    포함 된 모듈은 상위 클래스의 인스턴스 변수를 호출 할 수 없습니다.

  17. 17

    다른 클래스의 객체에 대한 포인터를 취하는 멤버 함수가있는 두 클래스

  18. 18

    URL의 일부와 특정 클래스를 포함하는 일치 링크

  19. 19

    모든 클래스 파일을 포함하는 glob 문제

  20. 20

    다른 개체의 슈퍼 클래스를 포함하는 개체 복사

  21. 21

    html5 태그 (일부 클래스 포함)를 동일한 클래스의 div 태그로 변환

  22. 22

    html5 태그 (일부 클래스 포함)를 동일한 클래스의 div 태그로 변환

  23. 23

    Python-다른 모듈의 변수를 포함하는 목록 채우기

  24. 24

    동일한 파일을 포함하여 HTML, CSS Navbar 항목 강조 표시는 모든 필수 페이지에 navbar를 포함합니다.

  25. 25

    Solaris의 다중 처리 모듈을 포함한 Python 소스 (PyInstaller 사용) 고정 문제

  26. 26

    Retrolambda를 포함하는 클래스로 분석하는 동안 Lint가 예외와 함께 충돌합니다.

  27. 27

    Rails 모듈-테스트 중 다른 모듈 포함

  28. 28

    StringA를 포함하는 모든 줄과 일치하지만 StringB도 포함하는 줄은 무시합니다.

  29. 29

    컴포지션 또는 친구 클래스를 사용하여 다른 클래스의 멤버 함수를`this '클래스의 멤버 함수로 액세스

뜨겁다태그

보관