ホームページ  >  記事  >  バックエンド開発  >  PHP関数spl_autoload_registerの使い方を詳しく解説

PHP関数spl_autoload_registerの使い方を詳しく解説

WBOY
WBOYオリジナル
2016-07-25 08:56:42992ブラウズ
  1. class A{
  2. public function __construct(){
  3. echo 'Got it.';
  4. }
  5. }
コードをコピー

すると、index.phpがあります。このクラス A に対する従来の書き込み方法は次のとおりです。

  1. require('A.php');

  2. $a = new A();

コードをコピー

問題: Index.php にクラス A だけでなく多くのクラスを含める必要がある場合は、何行もの require ステートメントを記述する必要があります。

php5では、定義されていないクラスを利用しようとすると__autoload関数が自動的に呼び出されるため、__autoload関数を記述することでphpに自動的にクラスをロードさせることができます。

上記の例は次のように変更できます。

  1. function __autoload($class) {

  2. $file = $class .php'
  3. if (is_file($file)) {
  4. require_once($file) ; __autoload を使用してクラスをロードするためのルールを定義します。

  5. コードをコピー
さらに、自動的にロードするときに __autoload を呼び出さず、独自の関数 (またはクラス メソッド) を呼び出したい場合は、 spl_autoload_register を使用して独自のオートロードを登録できます。関数。
関数のプロトタイプは次のとおりです。 bool spl_autoload_register ( [callback $autoload_function] )
上記の例を引き続き変更します。

関数loader($class) {

$file = $class . '.php'
    if (is_file($file)) {
  1. require_once($file)
  2. コードをコピー
  3. phpはクラスを探すときに__autoloadを呼び出さず、自己定義の関数ローダーを呼び出します。
  4. 例えば以下のような書き方も可能です。

public static function loadClass($class) { $file = $class . '.php' if (is_file($file)) {

require_once($file);

}

}

}

spl_autoload_register(array('Loader', 'loadClass')); = new A();

  1. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。