ホームページ  >  記事  >  バックエンド開発  >  PHP は関連関数の自動ロードを実装します

PHP は関連関数の自動ロードを実装します

小云云
小云云オリジナル
2018-03-17 09:52:581579ブラウズ

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自動読み込みについて徹底解説

以上がPHP は関連関数の自動ロードを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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