YII의 Autoloader는 PSR-4를 기반으로하는 또는 문화를 포함하지 않고 필요에 따라 클래스를 자동으로로드하는 중요한 구성 요소입니다. 네임 스페이스를 디렉토리 경로에 매핑하여 작동합니다. 코드가 클래스를 참조하면 YII의 Autoloader는 네임 스페이스 및 클래스 이름을 기반으로 해당 파일을 찾으려고합니다. 예를 들어, 코드가 <code> \ app \ models \ user
를 사용하는 경우 Autoloader는 app/models/user.php
에있는 파일을 검색합니다. 이 매핑은 일반적으로 구성 요소
섹션에서 autoload
에 종종 구성 요소
섹션에서 정의됩니다. psr4
배열은보다 일반적으로 사용되는 방법입니다. 네임 스페이스를 디렉토리에 매핑합니다. 응용 프로그램 구성에서 항목을 추가하거나 수정하여 사용자 정의 할 수 있습니다. 예를 들어 새 네임 스페이스 매핑을 추가하려면 응용 프로그램의 구성 파일 (예 :
이 예제는 vendor \ mylibrary
네임 스페이스에 대한 매핑을 추가합니다. 프로젝트 구조를 반영하기 위해 이러한 경로를 조정할 수 있습니다. classmap
배열을 수정하는 것은 비슷하게 작동합니다. 클래스 이름을 파일 경로에 명시 적으로 매핑합니다. 대규모 프로젝트에 대한 변경 사항을 변경하기 위해 자동 로더 구성을 변경 한 후 응용 프로그램의 런타임 캐시를 지우는 것을 잊지 마십시오.
예, 여러 전략을 사용하여 대형 프로젝트에서 YII의 자동로드 성능을 향상시킬 수 있습니다. Autoloader의 검색 공간. 가능하면 깊게 중첩 된 네임 스페이스를 피하십시오. 그룹 관련 클래스는 논리적으로 AutoLoader가 이동 해야하는 디렉토리의 수를 최소화하기 위해 논리적으로 그룹 관련 클래스를 최소화합니다.
classmap
배열에 추가로 성능을 향상시킬 수 있습니다. classmap
는 PSR-4에 내재 된 디렉토리 트래버스를 우회하여 직접 매핑을 제공합니다. Several pitfalls can arise when customizing Yii's autoloader:
psr4
배열에서 네임 스페이스는 클래스의 실제 디렉토리 위치에 올바르게 맵핑됩니다. 오타 또는 잘못된 경로는 자동로드 오류의 일반적인 원인입니다. psr4
어레이에 충돌하는 네임 스페이스 매핑이 없도록합니다. 여러 항목이 동일한 네임 스페이스에 맵핑되면 예측할 수없는 동작이 발생할 수 있습니다. classmap
: whind classmap
의 과도한 사용은 자주 사용되는 클래스에 대한 성능 장점을 제공하며, 대규모 구성 파일로 이어지고 잠재적으로 자동로드의 이점을 부정 할 수 있습니다. 타사 라이브러리를 YII의 자동로드 메커니즘과 통합하려면 일반적으로 응용 프로그램 구성에 네임 스페이스 매핑을 추가하는 것이 포함됩니다. 타사 라이브러리가 벤더> 디렉토리 (작곡가 관리 패키지의 표준 위치)에 있다고 가정합니다. 라이브러리가 PSR-4 자동 로딩을 사용하는 경우 (대부분의 최신 라이브러리처럼) 네임 스페이스에 대한 <code> psr4
배열에 config/main.php
파일에 매핑을 추가해야합니다. 예 :
<code class="php"> 'components'= & gt; [ 'autoload'= & gt; [ 'psr4'= & gt; [// ... 기존 매핑 ... 'MyVendor \\ myLibrary \\'= & gt; [ '@vendor/mylibrary'], // 실제 공급 업체 및 라이브러리 경로],],],],],],],],],],], </code>
이것은 라이브러리의 네임 스페이스가 myvendor \ mylibrary
이며 소스 코드는 @vendor/mylibrary
에 있다고 가정합니다. 라이브러리가 다른 자동로드 메커니즘 (예 : PSR-0 또는 사용자 정의 자동 로더)을 사용하는 경우 통합에 대한 특정 지침을 위해 문서를 참조해야 할 수도 있습니다. 경우에 따라 YII의 자동 로더가 시작되기 전에 라이브러리의 자동 로더 파일을 수동으로 포함시켜야 할 수도 있습니다. myvendor
, mylibrary
및 @vendor/mylibrary
와 같은 자리 표시자를 실제 라이브러리 세부 정보로 교체하십시오. 라이브러리가 작곡가를 사용하지 않는 경우 PHP에 대한 라이브러리의 경로를 수동으로 추가해야 할 수도 있습니다.
위 내용은 YII의 자동 로더는 어떻게 작동하며 어떻게 사용자 정의 할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!