麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

PHP教程-PHP代碼中的名稱空間

2020-03-24 19:09:59
字體:
來源:轉載
供稿:網友
在 PHP V5.3 中引入的名稱空間是為 PHP 類、常量和函數提供上下文的一種方式,從而可以將使用相同名稱的元素看作是惟一的。惟一的名稱避免了命名沖突,當兩個類或函數使用相同的名稱時就會發生這種情況。有時這些 PHP 類表示現實世界中的相同對象,但它們的行為是完全不同的。名稱空間能夠確保您擁有正確的 PHP 類、常量或函數,并且要使用您的 PHP 類的人能夠確保他們使用了正確的類。代碼中的名稱空間就像現實世界中的上下文??紤]一個表示現實世界中的汽車對象的類。例如,通過 Internet 銷售汽車的公司使用的 Automobile 類的行為可能與保險銷售公司使用的 Automobile 類完全不同。作為html' target='_blank'>應用程序開發人員,您可能使用其他人編寫的組件。您不能保證其他人永遠不使用您已經使用的類名,但這些類的行為卻大相徑庭。在出現名稱空間之前,PHP 開發人員通常將上下文構建到類名中,例如 My_Enterprise_Person 或 XML_Validator。清單 1 顯示了一個位于名稱空間中的類。
清單 1. 在名稱空間中聲明類

下面給出了一個例子,展示了如何在名稱空間中引用類。
清單 2. 在名稱空間中引用類

在向所有類添加名稱空間之前定義一個名稱空間策略是個不錯的主意。盡管在某種程度上也可以不斷地構建名稱空間,但最好為名稱空間確定一個通用結構,以方便名稱空間的組織,并減少以后可能需要的修改。只要正確使用,除了提供上下文之外,名稱空間還可以用來組織 PHP 代碼。其他語言(比如 Java 和 C#)在很久以前就使用名稱空間。在選擇名稱空間命名方式上,我使用的約定類似于這些語言的約定,因為許多開發人員都對此比較熟悉,便于他們理解。不過,與 Java 語言不同的是,PHP 中的名稱空間與類所在的目錄之間沒有聯系。您可以給類、函數或常量選擇任意的名稱空間。您甚至可以對一個文件使用多個名稱空間。同時,PHP 名稱空間也不同于 C#,您可以對類以外的函數或常量使用名稱空間。頂級名稱空間如果您為某個組織構建名稱空間,您可以使用組織名作為頂級域。一般情況下,使用組織名稱創建頂級名稱空間已經足以為 PHP 代碼提供上下文,以及避免命名沖突,除非該組織編寫大量用途不一的應用程序。清單 3 的示例顯示了如何聲明頂級名稱空間。
清單 3. 頂級名稱空間

次級名稱空間次級名稱空間 是頂級名稱空間內部的名稱空間。當頂級名稱空間還不足以為 PHP 類建立上下文時,它們提供進一步說明。在創建次級名稱空間時,不要憑一時的興趣而過多地創建,這很重要。隨著次級名稱空間的增多,組織和引用它們就會變得越來越困難。如果您希望名稱空間發揮雙重作用,即避免命名沖突和組織 PHP 代碼,那么就要更加注意這點了。在決定為了方便組織代碼應該向另一個名稱空間引入多少個次級名稱空間時,我嘗試將該數量限制為 7 個(上下浮動不超過 2),以利用數字 7 更加容易記住這個優勢。這并不總是奏效的,但我將它作為一個指導原則,以確保不將名稱空間劃分為過多的次級名稱空間。清單 4 的示例顯示了在頂級名稱空間中聲明次級名稱空間。
清單 4. 次級名稱空間

反斜杠(/)將次級名稱空間 developerWorks 與頂級名稱空間 IBM 分開。在聲明次級名稱空間時,您可以使用兩個常見技巧,或同時使用它們。獲取名稱空間的常見地方是項目名或應用程序名;另一個地方是域名。通過項目定義如果您使用組織名作為頂級名稱空間,并且想通過次級名稱空間來進一步提供上下文,那么可以使用項目名或應用程序名作為次級名稱空間。例如,如果您構建一個稱為 Greeter 的新應用程序(用于獲取用戶的名稱并問候他們),那么清單 5 中的名稱空間將為稱為 Prompt 的類提供完整的上下文。
清單 5. 使用應用程序名作為次級名稱空間


?php
namespace IBM/Greeter;
class Prompt {
...
}
?

由于 Prompt 可能是多個應用程序或庫的類名,所以為該名稱空間添加組織名和項目名能夠讓這個 Prompt 類與其他同名的類區分開來。通過域定義使用域名是另一種選擇次級名稱空間的常見方式,如 清單 6 所示。它也可以用于項目名之后,是否使用取決于您對可重用性的計劃(見 根據可重用性命名 )。域 是對更大的問題域的一組分類。域的一個例子是在更大型的應用程序中處理帳戶、客戶和產品的 Account 、 Customers 或 Products 。
清單 6. 使用域作為次級名稱空間


?php
namespace IBM/MyApp/Account;
class Address {
...
}
?

根據可重用性命名除了應用支持可重用性的模塊概念之外,類和名稱空間的命名方式也能夠實現可重用性。有時不良的命名方式會損害可重用性,因為不佳的名稱暗示著類僅能用于特定目的。同樣,錯誤地應用名稱空間可能會不必要地局限類的使用范圍,讓它們的重用變得困難。在使用組織名的頂級名稱空間中,應該保留 Common 、 Core 、 Lib 等可跨應用程序重用的名稱空間。一個常見的例子是驗證,其中針對整個企業的庫存單位(SKU)、帳號或發票號的規則是一樣的,從而獲得合適的規則和長度。對于 Validator 類,類似清單 7 的名稱空間是不錯的選擇。
清單 7. 使用通用的 validation 名稱空間


?php
namespace MyCompany/Common/Validation;
class NotNullValidator {
...
}
?

在這里,組織名用作頂級域( MyCompany )。 Common 名稱空間用作項目。即使在編寫這個類的同時也許正在編寫一個特定的應用程序,該類一樣可以在組織的任何項目中使用。最后, Validation 用作類的域。
使用別名盡管名稱空間能夠幫助您組織類并避免命名約定,但其缺點是名稱過長。幸運的是,PHP 支持使用別名,因此可以在代碼中使用更短的別名。清單 8 提供了一個示例。
清單 8. 使用別名

命名約定名稱空間命名使用單詞首字母大寫或 PASCAL 命名約定,這與其他 PHP 約定一樣,比如 PHP Extension 和 Application Repository (PEAR) 包命名和文件名。例如,清單 9 中的名稱空間比 清單 10 中的名稱空間要好。
清單 9. 單詞首字母大寫或 PASCAL 命名

避免使用與其他 PHP 約定沖突的命名和大小寫約定。
清單 10. 使用糟糕的大小寫約定

結束語PHP 中的名稱空間能夠用于組織代碼、避免命名沖突以及為類、函數和常量提供上下文。在名稱空間中使用模式或約定讓代碼更易于理解,并且更易于引用和使用。html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 特黄一区二区三区 | 91九色视频观看 | 国产精品视频在 | www.99tv| 一级毛片免费高清视频 | 久久免费视频精品 | 成人精品视频在线 | 高清国产免费 | www.精品在线| 一级黄色毛片播放 | 欧美性a视频| 久久国产精品区 | 日本黄色一级毛片 | 欧美日韩在线视频一区 | 成人一区二区在线观看视频 | 黑色丝袜美美女被躁视频 | 国产一国产一级毛片视频 | 亚洲网站在线观看 | 国产一区视频在线免费观看 | 成年人免费视频大全 | 成人精品一区二区三区中文字幕 | 精品中文字幕在线播放 | 一本一道久久久a久久久精品91 | 久久精品国产99久久久古代 | 色综合精品 | 国产成人在线免费看 | 欧美福利视频一区二区 | 毛片免费视频播放 | 亚洲成人在线视频网 | 亚洲乱搞| 日本视频免费观看 | 午夜精品毛片 | 蜜桃av网 | 97风流梦电影 | 日本在线观看视频网站 | 蜜桃传媒视频麻豆第一区免费观看 | 一区二区三区国产在线 | 一级黄色免费大片 | 成人黄色短视频在线观看 | 免费看日韩av | 激情av在线 |