質問
っていくのドキュメントのためのspl_autoload
bool spl_autoload_register ([ callback $autoload_function ] )
私の理解としての機能で登録されphpているクラスされていません。なので、
public function autoload() {
require ('nonLoadedClass.php');
}
spl_autoload_register(autoload);
$x = new nonLoadedClass();
を要する。んでも登録でき多くの機能の変化?
public function autoloadXXX() {...}
public function autoloadYYY() {...}
public function autoloadZZZ() {...}
spl_autoload_register('autoloadXXX');
spl_autoload_register('autoloadYYY');
spl_autoload_register('autoloadZZZ');
の場合主義
require_once(dirname(__FILE__) . '/lib/vendor/doctrine/Doctrine.php');
spl_autoload_register(array('Doctrine', 'autoload'));
配列が渡されないように変化の中で機能主義クラス(必須)?
解決
spl_autoloader_register
登録コールバック関数/メソッドは、たときに呼び出されるコードは利用しようとい知られるクラスです。
A コールバック 機能を説明すると複数の方法:
- 単純な機能名:
'my_function'
- 静的メソッド:
array('MyClass', 'myMethod')
- 方法のクラスのインスタンス:
array($myObject, 'myMethod')
の場合には義されているそうで、第二ソリューション:場合にクラスPHPんで使用すると、オートローダー着 Doctrine::autoload
, 、そのクラス名としてのパラメータとします。
んでも登録でき多くの変化 性能におい
ることができ、 spl_autoload_register
:
が必要とする複数の変化 機能
spl_autoload_register()
できます。ので効果的に を作成し、キューの変化と機能 とを通じてそれぞれの ている順序で定義されています。
ておりません一般的に定義しautoloading関数/メソッドの各クラスのいその非常に非効率だと思います。
その代わりに、利用のクラス名、または、autoloading機能を決めるファイルを出することができませんでした。
例えば、変化の機能このような
function my_autoloader($className)
{
require LIBRARY_PATH . '/' . $className . '.php';
}
フレキシビリティをされている場合のファイル名の後のクラスが含まれているので、immediatlyなく;-)
このクラスは多くの梨ン: My_Class_Name
マップファイルへの My/Class/Name.php
他のヒント
あなたの全体の文は正しいです。
spl_autoload_register
を使用すると、複数のautoload関数を登録することができます。あなたがPHP環境にロードされていないクラスのオブジェクトを作成または使用しようとする場合、PHPは、そのクラスを探して、すべての自動ロード機能を実行します。
あなたはコールバックに呼ばれているものを使用している与えるDoctrineの例では、内部のメソッドを登録しますクラス。コールバックは、単に(静的メソッドの)クラス名または(非静的メソッドの場合)、そのクラスのインスタンス、及びメソッド名を含む配列である。
何が正しいと言います。未知のクラスをインスタンス化するときに呼び出されます。その後、必要なファイルを要求/含めるためのチャンスを得る。
関数がクラス内に存在する場合には、は、配列で渡す必要があります。彼らは教義クラスのインスタンスの代わりにDoctrineのクラスに渡すため、この場合には、静的関数です。