忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/09/24 06:56 |
AuraPHP 1.0.0 Aura.Autoload
Aura.Autoloadは、名前のとおりオートローディングを扱います。
自作ライブラリなどをオートロードするのに使えます。
クラス名さえ規則的に決めていれば、その後一切の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


2013/06/12 23:25 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<AuraPHP 1.0.0-beta1 Aura.Filter | HOME | AuraPHP 1.0.0 Aura.Router その3>>
忍者ブログ[PR]