14

PHPは、名前空間を宣言するための2つの構文を提供します。以下に示すように、中かっこなしまたは中かっこ付きの名前空間を使用できます。

中かっこなし

namespace foo/bar;
class Any{}

中かっこ付き

namespace foo/bar {
   class Any{}
}

名前空間を使用するこれらの2つの方法の機能または動作に違いはありますか、それとも両方とも同じように機能しますか?

4

4 に答える 4

10

それぞれのケースにはさまざまな理由があります。PHP サイトに良い例があります

名前空間を中括弧で囲む理由は、1 つのファイルに複数の名前空間がある場合、または名前空間内に含まれるコードと同じファイルにグローバルな名前空間のないコードが必要な場合です。

また、1 つのファイルに複数の名前空間がある場合は、括弧なしの構文も使用できます。

PHP のガイドラインでは、これは推奨されていません。可能であれば、ファイルごとに 1 つの名前空間にとどめてください。

于 2013-03-21T13:05:49.133 に答える
5

最初のバリアントでは、ファイルごとに 1 つの名前空間しか使用できませんが、2 番目のバリアントでは複数の名前空間を使用できます。それらは同じ意味で使用でき、複数の名前空間を定義するために 1 つのファイル内で複数回発生する場合があります。中括弧を使用する唯一の理由は、次の場合です。

namespace {
    // code is in global scope
}

上記の例以外に、単一のファイルに複数の名前空間を持つことの潜在的な欠点は、ロードするクラスを解決するためにディレクトリとファイル名を使用するオートローダーです。したがって、複数のスクリプト ファイルを 1 つに結合する場合を除き、ファイルごとに複数の名前空間を持つことはお勧めしません。

于 2013-03-21T13:06:05.033 に答える
-2

最初のものには「Any」クラスしか含まれていないと思います。しかし、2 番目のものには中括弧の間にすべてのクラスが含まれています。

于 2013-03-21T13:06:41.950 に答える