1

PHPでアプリを設計しているときはいつでも、この問題が発生します。関数ごとに個別のファイルを作成する必要があるかどうかわかりません(例:特定のフォームを検証するための関数)。

OK、おそらく、これは意味がないと主張するでしょう。なぜなら、私は各ファイルを別々にインクルードする必要があり、これによりアプリケーションが遅くなる可能性があるからです。

しかし、1つのページロードでは、他の関数がスクリプトによってまったく使用されないのではないかと思うので、それでも意味があると思います。したがって、それらは無料でロードする必要がありますか?さらに、私が設計したシステムがこれを動的に(URL変数などを解析して)行う場合、つまり必要なときに関数(-files)を正確にロードする場合は、各関数ファイルを手動で含める必要はありません。どう思いますか?

4

4 に答える 4

2

OOを使用していますか?もしそうなら、あなたは間違いなくそれをファイルごとに1つのクラスに保ち、ファイルにインテリジェントに名前を付ける必要があります...

class Page {
      ...
}

classes/Page.phpまたは同様の場所で見つけることができるはずincludes/Page.class.phpです。

グローバル関数がたくさんある場合は、それらをファイルにグループ化する必要がありますincludes/functions/general.php

詳述すると、あなたのfunctionsフォルダには...

  • array.php
  • string.php
  • form_validation.php
  • request.php
  • general.php
  • html.php

このようにファイルを整理する場合は、クラスを使用して関数を静的にすることをお勧めしますstring::isAlphaNum($str)。これは、グローバル名前空間に不必要に多数の用語を導入するのではなく、1つの新しい用語のみを導入するため、より良いアイデアです。

PHP 5.3を使用している場合は、名前空間も確認できます。

于 2010-11-03T00:41:57.347 に答える
1

ファイルインクルードのオーバーヘッドは最小限であり、キャッシュなどを考慮すると、実際に心配する必要はありません。自分を整理し、自分のものをすばやく見つける方法についてです。

正直なところ、私はめったに関数を使用せず、クラスを使用します。ルールは通常、ファイルごとにクラスを持つことです。しかし、すべてのグローバル関数を含むツールボックスファイルもあります。

于 2010-11-03T00:44:21.840 に答える
1

APCxCache、またはeAcceleratorがインストールされていることを確認する必要があります。それらはすべて、コンパイルされたPHPバイトコードのキャッシュを提供します。

これは、ファイルが含まれると、それがメモリに保存され、機能要求で使用できるようになることを意味します。ファイルを含める必要はありません。

于 2010-11-03T00:54:02.690 に答える
0

多くの機能を備えた小さなファイルセットよりも、(多くの)複数のファイルインクルードでのディスクI / O読み取りの増加により、パフォーマンスが大幅に低下することはほぼ間違いありません。

自動ファイルインクルードの場合、関数を適切なクラスにラップし、spl_autoloadを使用してPHPにインクルードプロセスを処理させます。

于 2010-11-03T00:42:26.797 に答える