2016-12-10 1 views
0

PHP에서 부모 사이트 내에서 선택된 하위 사이트를 기반으로 자동 로더를 설정하는 기능이 있습니다.PHP - 자동로드 및 선언 된 클래스 재설정

spl_autoload_unregister 기능으로 자동 로더를 재설정하는 것이 좋습니다.

그러나 내가 알아 차린 것은 자식 사이트 이전에 이미 시작된 클래스 파일을로드 할 때 자동 로더를 재설정 한 후에도이 '이전'클래스 파일이 계속 사용된다는 것입니다.

예 :

부모 사이트로드

c:\parent\site\RouterClass에서 example\namespace\RouterClass 그럼 난 모든 자동 로더를 재설정하고 아이 사이트를 시작하고 아이 사이트에 대한 올바른 자동 로더를 설정합니다.

하위 사이트는 example\namespace\RouterClass을로드하지만이 파일을 새로운 자동로드 프로그램 인 c:\child\site\RouterClass에서 가져 오는 대신 상위 사이트에서 정의한대로 이전 파일에서 클래스를 가져옵니다.

나는 기능을 통해 등록 된 클래스 참조 :

get_declared_classes() 

을하지만이 변수 목록을 재설정 할 수 아니에요. 이 클래스 캐시를 재설정 할 수있는 경우 PHP는 RouterClass에 대한 새 검색을 시작하고 하위 사이트 자동 로더를 확인하여이를 찾습니다.

내가 확인한 두 번째 옵션은 runkit_method_redefine 이었지만 runkit_class_redefine과 같은 클래스에는 이와 유사한 기능이 없습니다.

누구나 선언 된 클래스 목록을 재설정하는 방법에 대한 아이디어가 있습니까? 또는 하위 사이트의 모든 네임 스페이스의 이름을 바꾸지 않고 위의 내용을 달성하는 방법

+0

하나는 파일을 포함하고 있고 그 파일은 포함되어 있습니다 (duh). 당신이해야 할 일과 그 이유는 무엇입니까? – Federkun

+0

그러면 코드 내의 컨텍스트에서 변경하고 프레임 워크 v1의 한 컨텍스트 및 프레임 워크 v2의 다른 컨텍스트에서 작업 할 수 있기 때문입니다. – PeterH

답변

1

불가능합니다. 한 클래스가 선언되면, 거기에 선다.

자동 로더를 동적으로 정의해야하는 경우 영향을받는 클래스가로드되기 전에 자동 로더를 정의해야합니다.