#在Tool.class.php 檔案下的程式碼是:
namespace CompanyTool;
class Tool{
#}
我的問題是為什麼 在 其他文件下如果使用 Tool類別 必須這樣寫:use Company\Tool\Tool
我以為 只要寫成 use Company\Tool 就行了(我理解的意思是可以使用這個空間下的任何類別了)。
希望大家講講,謝謝了。
巴扎黑2017-06-06 09:55:57
C++就有你想要的using namespace xxx
。
為啥PHP不直接引入整個命名空間,這大概參與設計的人才知道了。
我猜原因是避免一次引入過多不需要的東西,批量引入在各種語言中都是不推薦的。
ringa_lee2017-06-06 09:55:57
精確到類別可以提高效能。若只是精確到某個目錄,每次載入類別的時候,編譯器仍然需要去目錄中尋找該類別是否存在。
精確到類可以避免衝突,若2個目錄存在相同的類名,若精確到類,則很好的對衝突進行避免。
易於優化,C#擁有樓主所說的特性,但是C#是直接編譯成可執行文件,但是java則採取的是精確到類的做法,同為解釋型語言,這樣做的好處是有利於後期的解釋優化,讓類能精準的被找到,減少快取的消耗。
PHPz2017-06-06 09:55:57
可以 use 一個類,也可以 use 一個命名空間
namespace A;
class B
{
public function test() {}
}
引用
namespace C;
use A;
$b = new A\B();
$b->test();
或
namespace C;
use A\B;
$b = new B();
$b->test();
要是你那樣寫,勢必會讓autoload
找不到這個檔案。如果是手動載入檔案的,從命名空間的理解出發也必須那樣寫。而且我覺得問問題的那個排版應該是namespace CompanyTool;
吧