0

重複の可能性:
PHP の「インクルード」のコストは?

この質問は特にPHPに関するものですが、彼の答えは、本質的に、クラス (少なくとも解釈されたもの) をサポートするほとんどの最新のプログラミング言語に似ていると確信しています。

クラスをインクルードまたは使用する場合 ( PHP >= 5.3.0 の名前空間を使用)、処理リソースはどれくらい消費されますか?

たとえば、Database.phpコードが数千行を超える大きな PHP スクリプト ファイルがあり、それを別のスクリプトにインポートするとします。

# PHP >= 5.3.0
use Service\Database;

また

# in previous versions
include Service/Database.php;

この場合、カーテンの後ろで何が起こるかわかりません。すべてのクラスを作業メモリにロードしますか、それとも実際に使用する関数だけをロードしますか? 輸入しても使わない場合でも、資源を浪費していませんか?

4

1 に答える 1

1

他の言語ではパーサーの動作がまったく異なるため、この質問は PHP に固有のものです。

2 番目のコメント:useには何も含まれていないため、 の代わりにはなりませんinclude/require

3 番目のコメント: PHP ソース コードをスクリプトに含めるには、コードを解析してオペコードにし、それを解釈する必要があるため、初回以降はこのステップを排除するオペコード キャッシュがあります。これらにより、パフォーマンスが大幅に向上します。

何が起こるのですか?ファイルを含めると、そのファイルが実行されます。これは、ソースがキャッシュから解析またはフェッチされてから実行されることを意味します。classまたはのような何かを定義するコードのすべての行はfunction、後のコード行のその部分を定義します。変数や の定義など、何かを行うすべての行もecho同様に実行され、意図したとおりに動作します。

Includeその後解析されるソース コード インクルージョンではありません。コードはソースとして貼り付けられるのではなく、実行されるため、includeどこでも使用することはできません。実際、include含まれているコードが値を返す場合、関数自体として機能できます。これは、常に INI ファイルを解析するのではなく、opcode キャッシュを利用するために、構成値を含めるために一般的に使用されます。

config.php
return array('db' => 'example.com', 'user' => 'foo',);

other file:
$config = include('config.php);
于 2012-12-10T08:47:22.590 に答える