名前空間は、クラスを自動ロードするためだけのものではありません。また、名前の競合を防ぎます。実際、それが彼らの主な目的です。
User
アプリケーションのユーザーに関する情報を保存するためにという名前のクラスを必要とするプロジェクトがあるが、プラグインはUser
情報を保存するための名前の(異なる)クラスも使用するとします。名前空間を使用すると、1つの名前空間内にクラスを作成し(たとえば、MyApp
)、プラグインが別の名前空間を使用できるようにします(たとえば、CoolPlugin
)。MyApp
スペース内のコードはUser
(たとえばnew User();
)を参照するだけでよいため、スペース内のコードも参照できますCoolPlugin
。それぞれが期待される結果を取得します。別の名前空間のコードを使用する必要がある場合は、そのプレフィックスを付けるだけです。たとえば、内のコードCoolPlugin
スペースがアクセス可能User
でクラスをMyApp
介して、new \MyApp\User();
代替は、すべてのクラスが複雑な名前を必要としていることであるどこでものような、class MyApp_User
とclass CoolPlugin_User
。ネームスペースを使用すると、ほとんどの場合、物事を簡素化して、常に名前の競合を回避できます。
編集:質問に答えるために、「2つの間にパフォーマンスの違いはありますか?」
意味のあるものではありません 私はそれをベンチマークしていませんが、おそらくナノ秒レベルで違いがあります。ただし、非常に小さなパフォーマンス調整のためにコード品質を犠牲にすることは良い戦略ではないため、名前空間は関係なく使用する必要があります。同様の問題のベンチマークについては、PHPbench.comおよびこのStackOverflowの回答を参照してください。
この種のコンテキストでコードを微最適化することを心配する前に、コードは信じられないほどタイトで、信じられないほど時間に敏感でなければなりません(高周波取引や核反応の管理を考えてください)。本当に時間に敏感な場合は、おそらくPHPのような解釈言語ではなく、cまたはassemblyでコーディングする必要があります。