ClassLoaderは、オートローディングクラス用のPHPライブラリです。クラスのオートローディングとは、クラスがすべての実行に各クラスファイルを含める必要があるのではなく、実際に必要な場合にのみロードされることを意味します。これにより、特に大規模なWebサイトでページのオーバーヘッドの読み込みが削減されます。クラスファイルの一部のみをロードする必要があるためです。通常、クラスは、名前空間とクラス名に基づいてファイル名を持つファイルから動的にロードされます。これにより、多数のクラスファイルを簡単に管理できます。
このライブラリは、Autoloadingクラスの2つの現在の標準、つまりPSR-0とPSR-4をサポートしています。これらの基準の背後にある基本的なアイデアは、クラスファイルが名前空間に基づいてディレクトリとクラスにちなんで名付けられたファイルにあることです。これら2つの標準の主な違いは、PSR-4がディレクトリ階層に名前空間全体を存在させる必要がないことです。
ただし、実際のクラスファイルを見つけるという操作は比較的コストがかかる傾向があるため、このライブラリはPHPファイルのクラスファイルの場所をキャッシュできる基本的なキャッシュメカニズムも提供します。キャッシュを使用すると、自動装置とファイルのロードのパフォーマンスの違いは無視できます。
APIドキュメントは、Apigenを使用して生成できますが、http://kit.riimu.net/api/classloader/でオンラインで読むことができます。
このライブラリをインストールする最も簡単な方法は、Composerを使用して依存関係を処理することです。 Composerを介してこのライブラリをインストールするには、次の2つの手順に従ってください。
プロジェクトルートでComposerコマンドラインインストールを実行して、 composer.pharを取得します。
インストールスクリプトを実行したら、 composer.pharファイルをプロジェクトルートに配置し、次のコマンドを実行できます。
php composer.phar require "riimu/kit-classloader:^4.4"
このライブラリをComposerでインストールした後、インストール中にComposerによって生成されたvendor/autoload.phpファイルを含めることにより、ライブラリをロードできます。
Composerの使用方法にすでに精通している場合は、次のcomposer.jsonファイルをプロジェクトに追加し、 composer installコマンドを実行することにより、代わりにライブラリを依存関係として追加できます。
{
"require" : {
"riimu/kit-classloader" : " ^4.4 "
}
}Composerを使用してライブラリをロードしたくない場合は、最新リリースをダウンロードしてsrcフォルダーをプロジェクトに抽出して、ライブラリを手動でダウンロードすることもできます。次に、Libraryクラスをロードするために提供されたsrc/autoload.phpファイルを含めることができます。
ClassLoader addBasePath()それぞれPSR-0およびPSR-4標準で定義されているAutoloading addPrefixPath()それぞれサポートします。このライブラリを使用するためにこれらの標準を理解する必要はありません。単に最適な方法を使用してください。
PSR-0クラスAutoloadingは、クラスファイルが名前空間を反映するディレクトリツリーに配置する必要があることを定義しています。たとえば、クラス「foo bar baz」は、ファイル '/path/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 ();特定のディレクトリが特定の名前空間にのみ適用される場合、2番目のパラメーターを使用して名前空間を定義できます。ただし、ディレクトリは、名前空間のベースディレクトリを指す必要があります。例えば:
<?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 RiikkaKalliomäkiです。
ライセンスおよびコピー情報についてはライセンスを参照してください。