名前空間は、クラスを論理的に編成し、名前の競合を防ぐ方法を提供します。
いくつかの共通言語
C++
名前空間は入れ子にすることができます
入れ子になった名前空間は、他の名前空間で定義された名前空間を参照します。ネストされた名前空間はネストされたスコープです。内側の名前空間で宣言された名前は、外側の名前空間で宣言された同じ名前のメンバーを非表示にします。
<code><span>int</span> x = <span>20</span>; <span>namespace</span> outer { <span>int</span> x = <span>10</span>; <span>namespace</span> inner { <span>int</span> z = x; } } <span>int</span> main() { std::cout << outer::inner::z; <span>// 输出10 </span><span>return</span><span>0</span>; } </code>
C#
ネストされた名前空間
各名前空間には「.」が付きます。
例:
<code>namespace N1.N2 { class A {} class B {} } 在语义上等效于 namespace N1 { namespace N2 { class A {} class B {} } } </code>
Java
<code><span>package</span> cn.org.web3d.x3dpad</code>
Java の名前空間は、独立したトップレベル ドメイン名がある限り、プロジェクトの絶対的な一意性を保証できることを意味します。
Objective-C
Objective-C アプリケーションのすべてのクラス名はグローバルに一意である必要があります。これらの洗練された言語と比較すると、Objective-C の弱点は常に命名です。 Apple は、公式ライブラリおよびフレームワーク用にプレフィックスとして 2 文字を含むクラス名を用意することを公式に推奨しています。サードパーティ開発者に対しては、クラス名にプレフィックスとして 3 文字以上を使用することが公式に推奨されています。
PHP
<code><span>namespace</span> Vendor\Package\<span>...</span>..</code>
これは、第 1 レベルのベンダーが一意の識別子である必要があることを強調しています。つまり、プロジェクトの絶対的な一意性を確保するには、{Vendor}.com というトップレベルのドメイン名が必要です。たとえば、これを考えたとき、私は自分を守るためにすぐにmeanir.comというドメイン名を登録しました。
上記では、内容の側面も含め、いくつかの一般的な言語の名前空間の機能を紹介しました。PHP チュートリアルに興味のある友人にとって役立つことを願っています。