클래스 로더는 자동 로딩 클래스를위한 PHP 라이브러리입니다. 클래스 자동 로딩은 클래스가 모든 실행에 각 클래스 파일을 포함하지 않고 실제로 필요한 경우에만로드됨을 의미합니다. 이로 인해 일부 클래스 파일 만로드해야하므로 더 큰 웹 사이트에서 페이지로드 오버 헤드가 줄어 듭니다. 일반적으로 클래스는 네임 스페이스 및 클래스 이름을 기반으로 파일 이름이있는 파일에서 동적으로로드됩니다. 또한 많은 클래스 파일을보다 쉽게 관리 할 수 있습니다.
이 라이브러리는 자동로드 클래스의 현재 표준 중 두 가지, 즉 PSR-0 및 PSR-4를 지원합니다. 이러한 표준의 기본 아이디어는 클래스 파일이 네임 스페이스를 기반으로 디렉토리와 클래스의 이름을 따서 명명 된 파일에 상주한다는 것입니다. 이 두 표준의 주요 차이점은 PSR-4가 디렉토리 계층에 전체 네임 스페이스가 존재하지 않아야한다는 것입니다.
그러나 실제 클래스 파일을 찾는 작업은 비교적 비용이 많이 드는 경향이 있으므로이 라이브러리는 PHP 파일에서 클래스 파일 위치를 캐싱 할 수있는 기본 캐싱 메커니즘을 제공합니다. 캐싱을 사용하면 자동로드와 파일로드 사이의 성능 차이는 수동으로 무시할 수 있습니다.
Apigen을 사용하여 생성 할 수있는 API 문서는 http://kit.riimu.net/api/classloader/에서 온라인으로 읽을 수 있습니다.
이 라이브러리를 설치하는 가장 쉬운 방법은 작곡가를 사용하여 종속성을 처리하는 것입니다. 작곡가를 통해이 라이브러리를 설치하려면 다음과 같은 두 단계를 따르십시오.
프로젝트 루트에서 Composer 명령 줄 설치를 실행하여 composer.phar 를 획득하십시오.
설치 스크립트를 실행하면 composer.phar 파일이 프로젝트 루트에 있어야하며 다음 명령을 실행할 수 있습니다.
php composer.phar require "riimu/kit-classloader:^4.4"
Composer를 통해이 라이브러리를 설치 한 후에는 설치 중에 작곡가가 생성 한 vendor/autoload.php 파일을 포함하여 라이브러리를로드 할 수 있습니다.
Composer를 사용하는 방법에 이미 익숙한 경우 다음 composer.json 파일을 프로젝트에 추가하고 composer install 명령을 실행하여 라이브러리를 종속성으로 추가 할 수 있습니다.
{
"require" : {
"riimu/kit-classloader" : " ^4.4 "
}
} 작곡가를 사용하여 라이브러리를로드하지 않으려면 최신 릴리스를 다운로드하고 프로젝트에 src 폴더를 추출하여 라이브러리를 수동으로 다운로드 할 수도 있습니다. 그런 다음 제공된 src/autoload.php 파일을 포함하여 라이브러리 클래스를로드 할 수 있습니다.
ClassLoader 각각 addBasePath() 및 addPrefixPath() 메소드를 통해 PSR-0 및 PSR-4 표준에 의해 정의 된대로 자동로드를 지원합니다. 이 라이브러리를 사용하기 위해 이러한 표준을 이해할 필요는 없습니다. 단순히 자신에게 가장 적합한 방법을 사용하십시오.
PSR-0 클래스 자동로드는 클래스 파일이 네임 스페이스를 반영하는 디렉토리 트리에 배치해야한다고 정의합니다. 예를 들어, 'foo bar baz'클래스는 '/spath/to/classes/foo/bar/baz.php'에 위치 할 수 있습니다. 이 방법은 일반적으로 클래스 파일을 배치하는 가장 간단한 방법입니다.
addBasePath() 메소드를 사용하여 클래스를 찾을 위치를 정의 할 수 있습니다. 위에서 언급 한 클래스를로드하려면 다음 코드를 사용할 수 있습니다.
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();특정 디렉토리가 특정 네임 스페이스에만 적용되는 경우 두 번째 매개 변수를 사용하여 네임 스페이스를 정의 할 수도 있습니다. 그러나 디렉토리는 여전히 네임 스페이스의 기본 디렉토리를 가리켜 야합니다. 예를 들어:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();PSR-0은 클래스 이름의 밑줄이 네임 스페이스 분리기 (네임 스페이스에서는 밑줄이 아님)로 취급된다고 명시합니다. 따라서 수업이 'foo bar_baz'라고도하더라도 위의 두 예 모두 여전히 작동합니다. 클래스 네임 스페이스가 클래스 이름의 밑줄을 사용하여 정의 되더라도 네임 스페이스 인수에서 백 슬래시를 사용해야합니다.
PSR-0과 달리 PSR-4 클래스 자동 로딩 표준은 전체 네임 스페이스를 반영하는 디렉토리 트리에 클래스를 배치 할 필요가 없습니다. 대신 네임 스페이스의 일부를 특정 경로로 대체 할 수 있습니다.
예를 들어, 클래스 'foo bar baz'가 '/path/to/library/baz.php'파일에 위치한 경우 addPrefixPath() 사용하여 경로를 등록하고 다음 예제에 표시된대로 네임 스페이스를 지정할 수 있습니다.
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ( ' /path/to/Library/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz (); 이를 통해 전체 네임 스페이스를 디렉토리 트리에 반영 할 필요가 없으므로 디렉토리 구조가 훨씬 짧습니다. 네임 스페이스 인수를 생략 할 수도 있으며,이 경우 클래스 이름의 강조가 네임 스페이스 분리기로 취급되지 않는다는 사실을 제외하고 경로는 addBasePath() 를 통해 추가 된 경로와 동일하게 작동합니다.
경로 추가 방법을 여러 번 호출 할 수 있지만 배열을 사용하여 여러 경로를 추가 할 수 있습니다. 이것은 일반적으로 구성이 훨씬 쉬워집니다. 예를 들어 배열을 제공하여 여러 기본 경로를 추가 할 수 있습니다.
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' /path/to/classes/ ' ,
' /other/path/ ' ,
]);
$ loader -> register ();또는 배열 키를 사용하여 네임 스페이스를 정의하는 연관 배열을 제공하여 네임 스페이스 특정 경로를 추가 할 수 있습니다.
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' FooBar ' => ' /path/to/classes/ ' ,
' OtherNamesapace ' => [ ' /other/path/ ' , ' /some/other ' ],
]);
$ loader -> register ();위의 예에서 볼 수 있듯이 특정 네임 스페이스 경로 목록을 제공 할 수도 있습니다.
각 요청에서 파일 시스템에서 클래스를 찾는 것은 비용이 많이 드는 일입니다. 모든 요청에서 검색 할 필요가 없도록 파일 위치를 캐시하는 것이 좋습니다. 결국, 클래스 파일은 파일 시스템에서 이동하는 경향이 없습니다.
이 라이브러리는 FileCacheClassLoader 를 통해 매우 간단한 캐싱 시스템을 제공합니다. 클래스는 파일 위치를 단일 PHP 파일에 저장하는데,이 파일은 수동으로 파일을 검색하는 대신 모든 요청에로드됩니다.
FileCacheClassLoader 의 사용은 ClassLoader 사용과 크게 다르지 않습니다. 생성자의 쓰기 가능한 캐시 파일로의 경로를 제공하면됩니다. 파일은 클래스 위치를 저장하는 데 사용되며 새 클래스 파일이 발견되면 다시 작성됩니다. 예를 들어:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader FileCacheClassLoader ( __DIR__ . ' /cache.php ' );
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();이 라이브러리는 저작권 (C) 2012-2017 Riikka Kalliomäki입니다.
라이센스 및 복사 정보는 라이센스를 참조하십시오.