PHP에서 SPL_Autoload_register는 클래스 또는 인터페이스가 사용되지만 포함되지 않았을 때로드 로직을 자동으로 실행하기 위해 하나 이상의 자동 부로 함수를 등록하는 데 사용됩니다. 일반적인 시나리오는 네임 스페이스를 결합하여 다양한 디렉토리에서 클래스 파일을 구성하고 자동 로더를 통해 요구 사항 또는 포함을 피하는 것입니다.
그러나 경우에 따라 등록 된 부하 기능을 제거 해야하며 SPL_AUTOLOAD_UNREGISTER를 사용할 수 있습니다.
등록하다:
<span><span><span class="hljs-title function_ invoke__">spl_autoload_register</span></span><span>(</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$autoload_function</span></span><span>);
</span></span>제거하다:
<span><span><span class="hljs-title function_ invoke__">spl_autoload_unregister</span></span><span>(</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$autoload_function</span></span><span>);
</span></span>여기서 $ autoload_function은 등록 시간과 일치해야합니다. 그렇지 않으면 올바르게 제거 할 수 없습니다.
네임 스페이스에 정의 된 클래스 메소드가 로딩 함수로 사용되면 SPL_Autoload_register 및 SPL_Autoload_unregister 로 전달 된 값에 완전한 네임 스페이스가 포함되어야합니다. 예를 들어:
<span><span><span class="hljs-title function_ invoke__">spl_autoload_register</span></span><span>(</span><span><span class="hljs-keyword">__NAMESPACE__</span></span><span> . </span><span><span class="hljs-string">'\Loader::autoloadA'</span></span><span>);
</span></span>네임 스페이스 접두사가없는 로더 :: autoloada 로 작성된 경우 SPL_Autoload_unregister가 일치하지 않아 제거되지 않을 수 있습니다.
여러 로딩 전략의 전환 <br> 일부 프레임 워크 또는 라이브러리는 여러 디렉토리 또는로드 규칙과 호환되도록 여러로드 기능을 연속적으로 등록 할 수 있습니다. 특정 단계로 실행 한 후에는 그 중 하나만 유지하면 SPL_Autoload_unregister를 통해 다른 사람을 제거 할 수 있습니다.
임시 로더 <br> 디버깅 또는 마이그레이션 단계 동안, 공식 논리에 영향을 미치지 않도록 초기화가 완료된 후 임시 디버깅 로더를 등록하고 제거 할 수 있습니다.
SPL_AUTOLOAD_UNREGISTER 의 매개 변수는 등록 시점의 매개 변수와 정확히 동일해야합니다.
네임 스페이스 환경에서 __namespace__와 같은 전체 자격을 갖춘 이름을 작성하십시오. '\ class :: method' .
유효하지 않은 로더를 제거하면 반복 트리거 또는 잘못된 로딩을 피할 수 있습니다.
SPL_AUTOLOAD_REGISTER 및 SPL_AUTOLOAD_UNREGISTER를 합리적으로 사용함으로써, 특히 대규모 프로젝트 및 다중 이름 공간 환경에서 PHP의 자동로드 메커니즘을 유연하게 관리 할 수 있으므로 더욱 중요합니다.