-
- class A{
- public function __construct(){
- echo 'Got it.';
- }
- }
-
コードをコピー すると、index.phpがあります。このクラス A に対する従来の書き込み方法は次のとおりです。
require('A.php'); - $a = new A();
-
コードをコピー
問題:
Index.php にクラス A だけでなく多くのクラスを含める必要がある場合は、何行もの require ステートメントを記述する必要があります。
php5では、定義されていないクラスを利用しようとすると__autoload関数が自動的に呼び出されるため、__autoload関数を記述することでphpに自動的にクラスをロードさせることができます。
上記の例は次のように変更できます。
-
function __autoload($class) { - $file = $class .php'
- if (is_file($file)) {
- require_once($file) ; __autoload を使用してクラスをロードするためのルールを定義します。
-
-
-
- コードをコピー
-
-
さらに、自動的にロードするときに __autoload を呼び出さず、独自の関数 (またはクラス メソッド) を呼び出したい場合は、 spl_autoload_register を使用して独自のオートロードを登録できます。関数。
関数のプロトタイプは次のとおりです。
bool spl_autoload_register ( [callback $autoload_function] )
上記の例を引き続き変更します。
関数loader($class) { $file = $class . '.php' if (is_file($file)) { - require_once($file)
- コードをコピー
-
-
- phpはクラスを探すときに__autoloadを呼び出さず、自己定義の関数ローダーを呼び出します。
-
- 例えば以下のような書き方も可能です。
-
-
-
-
-
public static function loadClass($class) { $file = $class . '.php' if (is_file($file)) { require_once($file); } } } spl_autoload_register(array('Loader', 'loadClass')); = new A();
|