이 기사는 PHP에 대한 관련 지식을 제공하며, 주로 자동 클래스 로딩 관련 내용을 소개합니다. PHP에서 자동 클래스 로딩과 관련된 파일을 분석해 보도록 하겠습니다. 모든 분들께 도움이 되기를 바랍니다.
자동 클래스 로딩
Composer는 애플리케이션이 의존하는 타사 라이브러리를 관리하는 데 사용할 수 있는 PHP 패키지 관리 도구입니다. Composer는 자동 로딩 기능을 통해 이러한 종속성을 로드할 수 있습니다.
Composer는 필요할 때 클래스를 로드하기 위해 특별한 PHP 기능을 사용하는 자동 로딩 메커니즘을 사용합니다. 이 함수는 오토로더 함수라고 하며 PHP 스크립트가 실행되기 전에 호출됩니다.
PHP 파서는 정의되지 않은 클래스를 발견하면 자동 로더 기능을 호출합니다. 자동 로더 기능은 클래스 이름을 매개변수로 받아들이고 이 클래스 이름을 사용하여 로드해야 할 파일을 결정합니다. 예를 들어, 클래스 이름이 Foo\Bar인 경우 자동 로더 함수는 /path/to/project/src/Foo/Bar.php 파일을 로드하려고 시도할 수 있습니다.
Composer 자체에는 애플리케이션이 의존하는 라이브러리를 로드하는 데 사용할 수 있는 자동 로딩 기능이 내장되어 있습니다. 예를 들어 Composer는 PSR-4 자동 로딩 사양을 사용하여 클래스를 로드할 수 있습니다. 이 사양은 네임스페이스와 파일 구조를 사용하여 로드해야 할 파일을 결정합니다. PSR-4 자동 로딩을 사용하려면 애플리케이션의 작곡가.json 파일에 네임스페이스 접두사와 파일 경로를 지정해야 합니다
사용 시 일반적으로 다음 클래스 자동 로딩 항목 파일만 포함하면 완료됩니다
require 'vendor/autoload.php';
PSR -4 클래스 자동 로딩 사양
PSR-4(PHP Standard Recommendation 4)는 PHP 자동 로딩 사양의 일종입니다. 네임스페이스와 파일 구조를 사용하여 PHP 클래스를 로드하는 표준 방법을 제공합니다.
PSR-4 사양에서는 각 네임스페이스에 해당 폴더가 있습니다. 예를 들어, Foo\Bar 네임스페이스가 있는 경우 해당 클래스 파일을 /path/to/project/src/Foo/Bar 폴더에 배치할 수 있습니다.
PSR-4 사양에서 클래스 이름은 일반적으로 파일 이름과 동일합니다. 예를 들어 Foo\Bar라는 네임스페이스와 Baz라는 클래스가 있는 경우 해당 정의를 /path/to/project/src/Foo/Bar/Baz.php 파일에 배치할 수 있습니다.
PSR-4 사양을 사용하는 경우 애플리케이션의 작곡가.json 파일에 네임스페이스 접두사와 파일 경로를 지정해야 합니다. Composer는 이 정보를 사용하여 자동 로딩 코드를 생성하고 이를 autoload_psr4.php 파일에 씁니다. 애플리케이션이 실행되면 Composer는 이 파일을 로드하고 자동 로더 기능을 사용하여 클래스를 로드합니다. [추천 학습: PHP 동영상 튜토리얼]
여러 파일 분석
vendor/autoload.php
입력 파일에는 autoload_real.php 파일이 직접 포함되어 있으며, 다음 메소드를 호출하여 사용 가능한 모든 네임스페이스를 등록합니다. 수업, 문서 등
ComposerAutoloaderInitxxxxxx::getLoader()
vendor/composer/autoload_classmap.php
단일 클래스 이름→클래스 파일의 모든 자동 로드 파일을 포함하는 배열을 반환합니다.
vendor/composer/autoload_files.php
자동으로 로드해야 하는 모든 PHP 파일을 포함하는 배열을 반환합니다. , 일반적으로 일부 전역 함수 등
vendor/composer/autoload_namespaces.php
자동 로딩 네임스페이스의 매핑 관계가 포함된 배열을 반환합니다.
vendor/composer/autoload_psr4.php
PSR-4 자동 로드 사양을 준수하는 네임스페이스 → 파일 경로 목록이 포함된 배열을 반환합니다.
위 내용은 PHP의 클래스별 관련 파일 자동 로딩에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!