Aura.Autoloadは、名前のとおりオートローディングを扱います。
自作ライブラリなどをオートロードするのに使えます。
クラス名さえ規則的に決めていれば、その後一切のrequire_once()が不要になります。
オートロードを有効にするには、基本的にファイル名=クラス名とすることが前提となります。
単にregister()するだけでも、include_pathからファイルを探してくれます。
add()メソッドで、クラス名の接頭辞、ネームスペースで抽出し、該当の条件であれば特定のディレクトリから探すという設定が可能になります。
ネームスペースが切ってあった場合、自動的にディレクトリを掘って探します。
これはAuraの命名規則と同じ構造となります。
setClass()は完全に特定のクラスを呼び出すとき専用で、クラス名とは別のファイル名を指定可能です。
まあ、こっちはrequire_once()と変わらない気もしますが。
このように、クラス名の取り決めさえしておけば一切インクルードを書かなくても済むようになる、非常に便利なAura.Autoloadでした。
しかしAuraそのものはオートローディングをComposerに任せていてAura.Autoloadを使っていないというこの現実。
AuraPHPの記事
自作ライブラリなどをオートロードするのに使えます。
クラス名さえ規則的に決めていれば、その後一切のrequire_once()が不要になります。
<?php
require_once('path/to/channel/vendor/autoload.php');
// Aura.Autoloader
$loader = new \Aura\Autoload\Loader();
// spl_autoload_register
$loader->register();
// デフォルトではinclude_pathが対象
$foo = new Foo(); // ./Foo.php
// クラス名がBarで始まる場合、↓をベースディレクトリにする
$loader->add('Bar', '/dir1');
$bar = new Barbara(); // /dir1/Bar.php
// ネームスペースHogeで始まる場合、↓をベースディレクトリにする
$loader->add('Hoge\\', '/dir2');
$fuga = new Hoge\Fuga(); // /dir2/Hoge/Fuga.php
// 個別に指定
$loader->setClass('Piyo', '/dir3/baz.php');
$piyo = new Piyo(); // /dir3/baz.php
// 指定クラスのフルパスを取得
$exist = $loader->find('Hoge\Foo\Bar'); // 存在しなければfalse
// ロード済のファイルを取得
$loaded = $loader->getLoaded();
// spl_autoload_unregister
$loader->unregister();
オートロードを有効にするには、基本的にファイル名=クラス名とすることが前提となります。
単にregister()するだけでも、include_pathからファイルを探してくれます。
add()メソッドで、クラス名の接頭辞、ネームスペースで抽出し、該当の条件であれば特定のディレクトリから探すという設定が可能になります。
ネームスペースが切ってあった場合、自動的にディレクトリを掘って探します。
これはAuraの命名規則と同じ構造となります。
setClass()は完全に特定のクラスを呼び出すとき専用で、クラス名とは別のファイル名を指定可能です。
まあ、こっちはrequire_once()と変わらない気もしますが。
このように、クラス名の取り決めさえしておけば一切インクルードを書かなくても済むようになる、非常に便利なAura.Autoloadでした。
しかしAuraそのものはオートローディングをComposerに任せていてAura.Autoloadを使っていないというこの現実。
AuraPHPの記事
PR