ホームページ  >  記事  >  バックエンド開発  >  spl_autoload_register を使用して自動読み込みインスタンスを実装する方法の詳細な説明

spl_autoload_register を使用して自動読み込みインスタンスを実装する方法の詳細な説明

伊谢尔伦
伊谢尔伦オリジナル
2017-07-01 09:45:502754ブラウズ

spl_autoload_register()関数は、主流のフレームワークで最も一般的に使用されるコア関数の1つである必要があり、関数とクラスの自動登録を実現し、autoload()と同様の機能を実現し、クラスの呼び出しとロードを簡素化できます。を実現し、作業効率を向上させます

ここでは、この機能のいくつかの特徴を実験を通して説明します。

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

バージョン互換
PHP 5 >= 5.1.2

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

コードは次のとおりです:

<?php 
function load(){ 
require_once&#39;lib.php&#39;; 
} 
spl_autoload_register(&#39;load&#39;); 
?>


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

コードは次のとおりです:

<?php 
class className{ 
function method(){ 
echo &#39;a method in class&#39;; 
} 
} 
function onlyMethod(){ 
echo &#39;method only&#39;; 
} 
?>

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

2 番目のステップでは、自動ロード クラスを呼び出します。コードは次のとおりです:

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

出力:

a method in class 
method only

手順: className クラスをインスタンス化します。 class method() 関数を呼び出し、同時にonlyMethod() メソッドを呼び出します。出力は正常で、エラーは発生しません

3番目のステップ、関数を直接呼び出します


onlyMethod();


注: インスタンス化されたクラスはありません、lib.php ファイル内のonlyMethod() 関数を直接呼び出します

出力:

致命的なエラー: '...(省略パス)' で未定義の関数onlyMethod() を呼び出します

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

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

出力: メソッドのみ

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



以上がspl_autoload_register を使用して自動読み込みインスタンスを実装する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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