この記事では、PHPで遅延読み込みを実装する方法について説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです:
通常の PHP の読み込みは、include()、require() などのメソッドを通じて外部ファイルを読み込み、インスタンスを通じてメソッドを呼び出すか、静的メソッドを直接呼び出すことです。一部のフレームワークでは、この方法で import ステートメントを記述するのは非常に面倒です。すべてのファイルはインポートされ、直接インスタンス化によって使用できますが、この方法では、より多くのクラス パッケージが作成されるほど、より多くのものが読み込まれるため、プログラムのパフォーマンスに影響します。
PHP のリフレクション クラス ReflectionClass を通じて、対応するクラスのリフレクション クラスを直接取得できます。
test.php ファイルは次のとおりです:
リーリー
リーリー
get_include_files() メソッドを通じて、現在のページで導入されているファイルを確認できます。リフレクション クラスをインスタンス化する前は、index.php ファイルのみが存在します。リフレクション クラスをインスタンス化すると、test.php ファイルが自動的に導入されます。このコードを見ると、__autoload() という名前のマジック メソッドがあることがわかります。メソッド ファイルの自動ロードが定義されており、現在のページでクラスが見つからない場合、ReflectionClass は __autoload() を呼び出してクラスをロードします。これが自動ロードのプロセスです。
__autoload() メソッドが有効かどうかを知りたい場合は、PHP 標準ライブラリ SPL のメソッドを通じて確認できます。 リーリー
sql_autoload_functions() メソッドは、現在のオートロード メソッドを表示するために使用されます。現在、__autoload マジック メソッドがあるため、オートロード メソッドが定義されていない場合は、関数名が返され、spl_autoload_register() メソッドが渡されます。 . オートロードメソッドにメソッドを登録します。ここでは、__autoload メソッドを newAutoload メソッドを使用します。
newAutoload メソッドでは、実行が成功するたびに、'require success' という文が出力されます。これは、テスト クラスがすでに作成されているため、ReflectionClass('test') が 3 回インスタンス化されたことを示しています。一度ロードすると、再度使用されない自動ロードを実行する方法。 getInstance() を介してクラスをロードする方法は、以前の include() よりもはるかに便利です。 getInstance() メソッドが記述されたファイルをロードするだけです。書き換えられた自動ロードメソッドは、必要に応じてクラス名を判断して異なるファイルパスを定義できます。 getInstance は静的変数を使用してインスタンスを保存できますが、これはデザイン パターンのシングルトン パターンも使用します。
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。 http://www.bkjia.com/PHPjc/963826.html