ホームページ  >  記事  >  php教程  >  PHPを用いた自動ロードに関する研究 spl_autoload_register

PHPを用いた自動ロードに関する研究 spl_autoload_register

WBOY
WBOYオリジナル
2016-06-13 12:03:48983ブラウズ

ここではこの機能の特徴を実験を通してお話します。

関数プロトタイプ
bool spl_autoload_register ([ callback $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )

互換性のあるバージョン
PHP 5 > ;= 5.1.2

実験プロセス
最初のステップ、spl_autoload_register() 関数を使用して、load() メソッドを登録します

コードをコピー コードは次のとおりです。


function load(){
require_once 'lib.php'
}
spl_autoload_register(' load');
?>



lib.php ファイルのコードは次のとおりです

コードをコピーしますコードは次のとおりです。


class className{
function method(){
echo 'クラス内のメソッド'
}
}

functiononlyMethod (){
echo 'メソッドのみ';
}
?>


説明: lib.php ファイルは className クラスであり、onlyMethod 関数です

2 番目のステップは、自動的にロードされたクラスを呼び出すことです

コードをコピーします コードは次のとおりです:


$class = new className();
$class->method();
onlyMethod();


>クラス
メソッドのみのメソッド

説明: 例 className クラスを変換し、class method() 関数とonlyMethod() メソッドを同時に呼び出します。出力は正常で、エラーはありません。

3 番目のステップは、関数

onlyMethod();

注: インスタンス化されたクラスはありません。ライブラリ内のonlyMethod() 関数を直接呼び出します。 .php ファイル
出力:
致命的なエラー: '...(パスを省略) ' の未定義関数onlyMethod() の呼び出し

4 番目のステップでは、className クラスをインスタンス化し、直接呼び出します

$class = new className();
onlyMethod();

出力: メソッドのみ

上記の 4 ステップの実験から、ロードされたファイルに関数が含まれている場合、内部のクラスをインスタンス化する必要があります。そうしないと、異常な未定義関数呼び出しエラーが発生します。使用する場合は注意してください。


参加情報: spl_autoload_register

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