これら2つの違いは何ですか:
use Exception;
use \Exception;
またはそれら:
use Foo\Bar;
use \Foo\Bar;
マニュアルには次のように書かれています。
名前空間名(FooBarなどのグローバル名ではなくFoo \ Barなどの名前空間区切り文字を含む完全修飾名前空間名)の場合、インポート名は完全修飾である必要があるため、先頭の円記号は不要であり、許可されないことに注意してください。現在の名前空間に関連して処理されません。
しかし、上記のすべてのバリアントが機能するため、これは本当に理解できません。つまり、「許可されていない」ことは間違いありません。
調べてみるzend_do_use
と、is_global
(先頭に円記号がある場合に設定)は、次の場合の警告にのみ使用されます。
namespace {
use Exception;
}
これは、「非複合名'Exception'のuseステートメントは効果がない」ことを示しています。(と同じuse \Exception
ことをしても効果はほとんどありませんが、警告はスローされません。)
だから:私は何かが欠けていますか?実際に違いはありますか?