PHP の実行時に、クラスを使用する必要があることが判明した場合 (このクラスに関連する操作である限り)、現時点では、現在のスクリプトにはこのクラスの定義コードがありません。このとき、PHP は __autoload() という名前の関数を自動的に呼び出します。また、呼び出し時には、現在必要なクラスのクラス名であるパラメーターが関数に渡されます。
#自动加载 函数function __aotuload($class_name){ if(!file_exists("./".$class_name.".class.php")){ include "./".$class_name.".class.php"; }else{ die("系统错误,没有找到相关的类!"); } }
通常、システムの自動ロード関数は __autoload() ですが、プロジェクトが拡張されると、たとえば、ロードされたファイルに複数の自動ロード関数が表示される場合があります。という関数が登場するのですが、このとき関数名が重複するという問題が発生します。
__autoload関数は一切使用しておりませんが、上記の状況を回避するためにユーザー独自のオートロード関数を登録します。
#注册其他的自动加载函数 解决自动加载函数重名问题function f1($class_name){ if(!file_exists("./".$class_name.".class.php")){ include "./".$class_name.".class.php"; }else{ die("系统错误,没有找到相关的类!"); } } spl_autoload_register('f1');
次の点に注意する必要があります:
1. 特定のクラスが必要になる前に登録を行う必要があります。
2. 自動ロード関数を複数登録できます。必要なクラスファイルが正常にロードされる前に、見つかるまで登録順に実行されます。
3. 他のオートロード関数が登録されると、システムのデフォルトの __autoload 関数は無効になります。
現時点で、__autoload関数を引き続き使用したい場合は、他の通常の関数と同様に再登録する必要があります。
オブジェクト指向プログラミングスタイルでは、通常、ユーザー定義の自動ロード関数をクラスにカプセル化します。
構文形式は次のとおりです:
spl_autoload_register(array('class name', 'method name'));
さらに、静的メソッドを登録するより簡単な形式もあります:
spl_autoload_register( ' クラス名::メソッド名');
現時点での登録手順は次のとおりです:
1、まずオブジェクトをインスタンス化する必要があります
2、次に spl_autoload_register( ) を登録します。この時点では、関数のパラメーター形式は次のとおりです:
spl_autoload_register(array(オブジェクト変数, 'メソッド名'));
#注册自动加载方法class Common { public static function autoload($class_name){ if(!file_exists("./".$class_name.".class.php")){ include "./".$class_name.".class.php"; }else{ die("系统错误,没有找到相关的类!"); } } } //spl_autoload_register("Common::autoload"); spl_autoload_register(array("Common","autoload"));
関連推奨事項:
PHP の単純なルーティングとクラスの実装コード自動読み込み機能
以上がPHP は関連関数の自動ロードを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。