12

関数が多数ある場合は、それらをすべて1つの大きなファイルに保持するか、関連する関数の複数のファイルに分割する方がよいでしょうか。より良いとは、保守性と要求を処理するサーバーの両方にとってより効率的であることを意味します。

たとえば、現在、すべてのファイルが。という名前のファイルにありますinclude.php。しかし、次のようなインクルードのインクルードファイルを用意する方が賢明でしょうか。

<?php
 include('/functions/user.php');
 include('/functions/admin.php');
 include('/functions/content.php');
 include('/functions/nav.php');
 include('/functions/database.php');
 include('/functions/other_junk.php');
?>
4

5 に答える 5

22

保守性のために、それらを確実に分離してください。パフォーマンスがまったく損なわれるとは思えませんが、たとえそうであったとしても (ほんの少し)、保守可能で読みやすいコードを作成する方がよいでしょう。

于 2010-01-21T03:28:51.857 に答える
3

XCache や APC などの PHP キャッシュを使用していることを確認する必要があります。その後、PHP ファイルはすべてメモリ内にあるはずであり、インクルードがディスクにヒットすることをまったく心配する必要はありません。

同じような関数/クラスを独自のファイルに分割すると、間違いなく簡単になります。

于 2010-01-21T04:01:39.097 に答える
2

保守性に関しては、通常、関数を関連するグループに分ける方が適切です。(上で示したようにuser.php、ユーザー関連の機能のみになります)。

ファイルをインクルードする必要があるたびに、インクルードされたすべてのファイルが必要になることがわかっている場合にのみ、これらのインクルードをすべて含むファイルを用意する必要があります。そうしないと、その「キャッチオール」ファイルを持つ目的が無効になります。

于 2010-01-21T03:30:39.247 に答える
2

私の経験では、関数ライブラリ用に数十個ほどのファイルを話している場合、複数のインクルードおよび/または要求は、一般的にあなたを後退させることはありません。特に、リクエストのライフサイクル中に特定のファイルのステートメントを 1 回だけ呼び出すことができる場合。

パフォーマンスの低下が見られるのは、何百もの異なるクラス/ファイルが存在する可能性のある OOP または非常に複雑な関数型/手続き型アーキテクチャに入った場合です。しかし、一般的にその時点で、キャッシング/コンパイルによって何らかの緩和策を講じていることを願っています。

于 2010-01-21T03:51:59.990 に答える
0

中央の .config ファイルにインクルードのリストがあります。

すべての OOP クラスで autoload を使用しますが、-> 少し遅いことはわかっていますが、新しいクラスを作成するときにそれらを含める必要がなくなります。また、必要な場合にのみロードされます。

余談ですが、ファイルが既にインクルードされているかどうかを確認する必要がないため、include は include_once よりも高速です。

于 2010-01-21T04:34:38.147 に答える