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