namespaceおよびuseの使い方

2531 ワード

namespace(以下nsと略す).nsを定義した後、以下に説明するclass、interface、const(variableを含まない)は、説明するnsという「ドメイン」の中にあります.nsの含まれているファイルを参照して、このnsの中のものを呼び出すには、現在のスクリプトもこのnsドメインに調整する必要があります.そうしないと、nsのフルネーム()を含む必要があります.
 
// inc.php
namespace Foo;
class Bar {}

//  Foo , 
require 'inc.php';
$foo = new \Foo\Bar();

//  Foo 
namespace Foo; //  Foo ns , namespace 
require 'inc.php';
$foo = new Bar();

 
useキーワードの目的はnsの別名を使用することです.
 
 
 
//  
use A\Very\Long\Namespace as Ns;
//  Ns A/Very/Long/Namespace ns 
$foo = new Ns\Foo();

 
しかし、いくつかのオープンソースプロジェクトではuse NsComponentのような使い方がよく見られます.asを使っていません.これは私に以前からuseに2つ目の使い方があるかどうかを考えていました.悪いことにphpのドキュメントにもこの使い方が説明されていません.推測するしかありません.後でよく考えてみました.比較的信頼できる結論はuseがasおよび後の別名を省略してnsの最後のノードの名前を直接別名とすることができ、ln-sコマンドの使い方に似ているのではないかということです.
 
//  
require 'inc.php';
use Foo\Bar; //  Bar Foo\Bar 
$foo = new Bar();