1

私のプロジェクト構造では、ファイルごとに通常のクラスを分離しており、自動ロードは簡単ですが、ここで、いくつかの小さなクラスを1つのファイル、おそらく現在のフォルダーの名前のファイルにグループ化します。

今:

|/module
|-Smallclass1.php
|-Smallclass2.php
|-Smallclass3.php
|-Normalclass.php

後:

|/module
|-module.php  <-- smallclasses go here
|-Normalclass.php

今、議論があります。1つの「SmallclassX」を自動ロードするには、SmallclassX.phpファイルが存在するかどうかを確認し、存在しない場合はmodule.phpが存在するかどうかを確認し、存在する場合は、クラスがファイル内に存在するかどうかを確認して含めます。単一のクラスが必要なときにmodule.phpファイル全体を含めることは、ファイルに多くのクラスが含まれている場合は特にオーバーヘッドのように思われます。ここでは、トークンを使用してクラスが存在するかどうかを確認することを提案していますが、その効率についてはわかりません。その後、必要なクラスのみを含めるメソッドが必要になります。

前述のように必要なクラスだけをロードするようになった場合、ファイルを何度も読み取り、内部を調べて必要なコードを含めるため、オーバーヘッドも発生すると思いますか?

4

1 に答える 1

1

spl_autoload_registerを使用してオートローダーをスタックできます。これにより、最初に専用ファイルからクラスをロードし、その後、モジュールファイルを含めるようにフォールバックできます(オートローダーが依存関係を解決できない場合は、通常どおりエラーになります)。これにより、トークンやその他のアイテムを解析することですべてのハッキングを回避できます。これには、ファイルを要求して後で結果を確認するだけでなく、はるかに多くのことが必要になります。

ただし、このソリューションのベンチマークを行うことをお勧めします。それがより効果的であるかどうかは、ファイルへのアクセスの遅延(APC)と、各クラスを個別に解析および含めるためのコストに依存します。

他のコメントにも同意します。クラスを含めるための2つの別個のスキームがあることは混乱を招く可能性があり、APCはとにかく別個のファイルを持つコストのほとんどを取り除きます。

于 2012-10-17T14:05:12.483 に答える