2016-12-30 89 views
-4

我很難理解命名空間。這沒有任何意義。不過,讓我引導你瞭解我學到的知識。瞭解`命名空間'

問題:如果每個文件都必須有include,名稱空間有什麼意義?爲什麼我只是不能說嘿,這是主要的根目錄,我想加載Core文件夾中的所有類。爲了我對c#的使用經驗的瞭解,我可以使用'Call'命名空間/類作爲參考,或者作爲一個新類。

由於這非常麻煩,我在每個包含該文件夾內所有文件的文件夾中創建了一個index.php文件。這有點像我自己的班級裝載機。

我只是不明白它。

包括命名空間..

包括類 「無厘頭」

使用\命名空間\到\類爲類;

$Class = new Class(); 

我只是不明白「使用」,如果你必須要求的用法。我就是這樣直觀地看到它的完成,我不喜歡這個概念,我希望這不是這個概念,但是我需要某個人的解釋。我需要完成一個項目。謝謝。

  • 對不起,這篇文章沒有格式化。我目前正在使用我的手機,並不知道stackoverflow bbcode也。
+0

你在你的分類中加入'include' /'require'並添加'use'嗎? –

+1

通常情況下,你有一個自動加載器,需要你所有的文件。因此,在項目中的文件中,您只需使用Namespace \ Class; $ obj = new Class();'。爲了讓簡單的自動加載器只使用作曲家,你也可以使用它來安裝/管理依賴關係。 – JimL

+0

use語句也是可選的使用。 '使用Namespace \ Class; $ obj = new Class();'與$ obj = new Namespace \ Class()相同;'use語句的明顯優點是使用文件中的類將需要更少的代碼。這也是(IMO)很高興有一個文件在頂部使用的類的列表。 – JimL

回答

2

manual

在PHP世界,命名空間被設計爲解決兩個問題,圖書館的作者和應用程序創建可重複使用的代碼元素如類或功能時遇到的問題:

  1. 您創建的代碼與內部PHP類/函數/常量或第三方類/函數/常量之間的名稱衝突。
  2. 可以用別名(或縮短)Extra_Long_Names來緩解第一個問題,提高源代碼的可讀性。

PHP命名空間提供了一種將相關類,接口,函數和常量分組的方法。

有關更多信息和一些示例,請參閱鏈接手冊頁。

Autoloading和命名空間互補,並幫助避免包括你抱怨。

1

因爲如果你的文件已包含同名全局變量/功能(不一定是常見的,但很可能的),他們會碰撞,編譯器將不知道你要引用哪一個。

如果一切都在命名空間內,除非命名空間名稱相同,否則將不會有任何命名衝突,因爲您需要引用命名空間名稱和函數名稱。

在開始編寫包含其他庫的大型程序之前,這不是一個問題,但它肯定是一個需要創建名稱空間的問題。