ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルの __autoload() メソッドの詳細な説明
マジック関数 __autoload() メソッドが PHP に登場する前は、プログラム ファイル内で 100 個のオブジェクトをインスタンス化する場合、include または require を使用して 100 個のクラス ファイルをインクルードするか、これらの 100 個のクラスを同じプログラム ファイル内で定義する必要がありました。クラス ファイル - このファイルは非常に大きくなると思います。
しかし、__autoload() メソッドが登場したので、今後はこのクラスがオブジェクトをインスタンス化する前に指定されたファイルを自動的にロードするようになります。
例を通して具体的な使い方を見ていき、PHPのマジック関数__autoloadを使う際の注意点については後ほど説明します。
コードは次のとおりです | コードをコピーします |
//クラスClassAを定義し、ファイル名はClassA.php //クラス ClassB を定義、ファイル名は ClassB.php、ClassB は ClassA を継承 |
テスト用に 2 つのクラスを定義した後、次のように __autoload() メソッドを含む PHP 実行プログラム ファイルを作成します。
コードは次のとおりです。 | コードをコピーします |
function __autoload($classname){ |
このファイルの操作には問題があります。なし。これは、autoload がいかに使いやすいかを示しています (笑)...
しかし、いくつかの側面に注意を払う必要があることを思い出してください。
1. クラスに継承関係があり (例: ClassB が ClassA を拡張する)、ClassA が ClassB が存在するディレクトリにない場合
__autoload マジック関数を使用して ClassB をインスタンス化すると、致命的なエラーが発生します。
コードは次のとおりです | コードをコピー |
致命的なエラー: クラス 'Classd' が ...ClassB.php の 2 行目で見つかりません |
解決策: extends 関係を持つすべてのクラスをクラスを継承するときは、継承したクラスをファイルに手動で含めます。
2. もう 1 つの注意点は、マジック関数 __autoload が実行できるように、クラス名とクラス ファイル名が一致している必要があることです。
その他の注意事項:
3. CLI モードで PHP スクリプトを実行する場合、このメソッドは無効です。例: .././ のようなファイル名は非常に危険です。
http://www.bkjia.com/PHPjc/444710.html