PHP use 命名空間時,為什麼要精確到命名空間下的一個類
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-06 09:53:57
0
3
645

#在Tool.class.php 檔案下的程式碼是:

namespace CompanyTool;

class Tool{

#}

我的問題是為什麼 在 其他文件下如果使用 Tool類別 必須這樣寫:use Company\Tool\Tool

我以為 只要寫成 use Company\Tool 就行了(我理解的意思是可以使用這個空間下的任何類別了)。
希望大家講講,謝謝了。

曾经蜡笔没有小新
曾经蜡笔没有小新

全部回覆(3)
巴扎黑

C++就有你想要的using namespace xxx

為啥PHP不直接引入整個命名空間,這大概參與設計的人才知道了。

我猜原因是避免一次引入過多不需要的東西,批量引入在各種語言中都是不推薦的。

左手右手慢动作
  1. 精確到類別可以提高效能。若只是精確到某個目錄,每次載入類別的時候,編譯器仍然需要去目錄中尋找該類別是否存在。

  2. 精確到類可以避免衝突,若2個目錄存在相同的類名,若精確到類,則很好的對衝突進行避免。

  3. 易於優化,C#擁有樓主所說的特性,但是C#是直接編譯成可執行文件,但是java則採取的是精確到類的做法,同為解釋型語言,這樣做的好處是有利於後期的解釋優化,讓類能精準的被找到,減少快取的消耗。

PHPzhong

可以 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;

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!