ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルで遅延読み込みを実装する方法

PHP_PHP チュートリアルで遅延読み込みを実装する方法

WBOY
リリース: 2016-07-13 10:05:17
オリジナル
949 人が閲覧しました

PHPで遅延ロードを実装する方法

この記事では、主にPHPで遅延ロードを実装する方法を紹介し、例とともに遅延ロードの実装テクニックを分析します。必要な場合は参照してください。

この記事の例では、PHP で遅延読み込みを実装する方法を説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:

通常の PHP の読み込みは、include()、require() などのメソッドを通じて外部ファイルを読み込み、インスタンスを通じてメソッドを呼び出すか、静的メソッドを直接呼び出すことです。一部のフレームワークでは、この方法で import ステートメントを記述するのは非常に面倒です。すべてのファイルはインポートされ、直接インスタンス化によって使用できますが、この方法では、より多くのクラス パッケージが作成されるほど、より多くのものが読み込まれるため、プログラムのパフォーマンスに影響します。

PHP のリフレクション クラス ReflectionClass を通じて、対応するクラスのリフレクション クラスを直接取得できます。

test.php ファイルは次のとおりです:

?

1

2

3

4

5

6

7

クラステスト{

パブリック関数 showName(){

var_dump(__CLASS__);

}

}

?>

index.php ファイルは次のとおりです:

?

1

ReflectionClass をインスタンス化し、クラス名を渡すと、対応するクラスのリフレクション クラスが取得されます。インスタンスを指定して newInstance を呼び出すと、リフレクション クラスのインスタンスが取得され、インスタンス化が完了します。

get_include_files() メソッドを通じて、現在のページで導入されているファイルを確認できます。リフレクション クラスをインスタンス化する前は、index.php ファイルのみが存在します。リフレクション クラスをインスタンス化すると、test.php ファイルが自動的に導入されます。このコードを見ると、__autoload() という名前のマジック メソッドがあることがわかります。メソッド 自動ロード ファイルが定義されており、ReflectionClass が現在のページでクラスを見つけられない場合、__autoload() を呼び出してクラスをロードします。これが自動ロードのプロセスです。

__autoload() メソッドが有効かどうかを知りたい場合は、PHP 標準ライブラリ SPL のメソッドを通じて確認できます。

?

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

var_dump(get_include_files());

$rf = 新しい ReflectionClass('test');

var_dump(get_include_files());

$testObj = $rf->newInstance();

$testObj->showName();

関数 __autoload($classname){

$クラスパス = './' .$クラス名 .

if (file_exists($classpath)) {

require_once($classpath);

}その他{

echo 'クラスファイル'.$classpath.'見つかりません!';

}

}

?>

//配列

// 0 => 文字列 'D:codewwwtestindex.php'(length=26)

//配列

// 0 => 文字列 'D:codewwwtestindex.php'(length=26)

// 1 => 文字列 'D:codewwwtexttest.php'(length=25)

//文字列 'テスト' (長さ=4)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

var_dump(spl_autoload_functions());

spl_autoload_register('newAutoload');

var_dump(spl_autoload_functions());

$testObj1 = getInstance('test');

$testObj2 = getInstance('test');

$testObj3 = getInstance('test');

関数 getInstance($class, $returnInstance = false){

$rf = 新しい ReflectionClass($class);

if ($returnInstance)

return $rf->newInstance();

}

関数 newAutoload($classname){

$クラスパス = './' .$クラス名 .

if (file_exists($classpath)) {

var_dump('成功が必要');

require_once($classpath);

} 他 {

echo 'クラス ファイル ' が見つかりません!';

}

}

//配列

// 0 => 文字列 '__autoload' (長さ=10)

//配列

// 0 => 文字列 'newAutoload' (長さ=11)

//文字列 '成功が必要' (長さ=15)

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/963972.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/963972.html技術記事 PHP で遅延ロードを実装する方法 この記事では、PHP で遅延ロードを実装する方法を主に紹介し、PHP ロードの原理と実装テクニックを例とともに分析します。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート