2

PHPには、2つの名前空間演算子があります。

\::

::内部の名前空間に使用されます。例:

namespace example;
class Foo {
    public static $bar = 'hello';
}

次の方法でクラス$barの他のメンバーにアクセスできます。FooFoo::$bar

ただし、の完全な名前空間名はでFooはなくexample::Foo、でありexample\Foo、$barの完全な名前空間名は次のようになります。example\Foo::$bar

すでに存在する1つの一貫した演算子に固執するのではなく、2つの演算子を使用する理由または理由は何でしたか?

4

2 に答える 2

4

これ::スコープ解決演算子であり、静的クラスにアクセスするためだけのものです。名前空間とは何の関係もありません。また、名前空間はPHP 5.3で追加されており、静的クラスのずっと後のことです。

それが彼らが2つの異なる演算子を使用する理由だと思います(2つの異なる目標のために)

于 2013-01-07T10:38:10.743 に答える
4

名前空間の区切り文字RFCを確認する必要があります。これは、バックスラッシュに賛成または反対に使用される実際の引数を呼び出します。

選択されなかった主な理由::は、スコープ解決を行うときに発生する可能性のあるあいまいさによるものでした。名前空間にエイリアス(use \Foo\Bar as Baz;)を付けることができるとすると、あらゆる種類の陽気なハイジンクが発生する可能性があります。

于 2013-01-07T10:47:42.547 に答える