<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • PHP中的命名空間的技巧講解

    時間:2024-04-29 06:12:53 PHP 我要投稿
    • 相關推薦

    PHP中的命名空間的技巧講解

      PHP對于命名空間的支持,經歷了一段艱難的旅程。幸運的是,PHP從5.3開始引入了命名空間。自從PHP引入了命名空間,PHP代碼的適用結構也得到了大大的改善。許多編程語言早就有了命名空間的概念,相對于其他語言來說,PHP對于命名空間的支持,稍微有點晚了。不管如何,每一種新特性的引入都有其目的,和其他語言一樣,PHP引入命名空間也主要是為了解決名字沖突的問題。

      命名空間(namespace)的概念

      代碼如下:

      當在字符串中使用命名空間名字的時候,一定不要忘了轉義

      可以將命名空間想象成一個抽屜,你可以在抽屜里放入鉛筆、尺子、A4紙等,這些都是你自己的私有物品。在你的抽屜下面是別人的抽屜,別人也可以在抽屜里放入相同的物品。為了不拿錯物品,你們決定在自己的抽屜上貼上標簽,這樣就可以清晰的看到某個物品是屬于誰的了。

      之前,開發者必須在類、函數和常量中添加下劃線,用來使自己的代碼獨立其他于代碼庫。這相當于所有人都給自己的物品貼上標簽之后,一起放入了一個更大的抽屜里。盡管這也是一種組織代碼的方式,但是這種方式是非常低效的。

      命名空間的到來就是為了解決這個問題。我們可以在不同的命名空間里聲明相同的函數、類和常量,而不會造成名字上的沖突。本質上,命名空間無非是一種分等級標記PHP代碼的方式。

      正在使用命名空間

      有一點需要注意的是,我們正在間接的使用命名空間。從PHP 5.3開始,所有在非用戶定義的命名空間中的聲明(類、函數、常量),都默認的屬于全局命名空間。

      全局命名空間中包含了所有PHP內部的定義,如echo()、mysqli_connect()和Exception類。由于全局命名空間并沒有獨立的標識名,所以它經常被成為全局空間(global space)。

      定義命名空間

      命名空間的定義必須是PHP文件的第一條語句。唯一允許在定義命名空間之前使用的語句是declare語句。

      定義命名空間很簡單,只需要使用關鍵字namespace即可。命名空間的名字需要遵循PHP文件中其他標識符的命名規則。

      下面是定義一個命名空間的示例:

      代碼如下:

      namespace MyNamespace{

      class Test{

      }

      }

      如果想定義一個屬于全局空間的代碼塊,也是使用namespace關鍵字,但是后面不加命名空間的名字,如下:

      代碼如下:

      namespace {

      class Test{

      }

      }

      我們甚至可以在一個文件中定義多個命名空間,如下:

      代碼如下:

      namespace MyNamespace {

      }

      namespace MySecondNamespace {

      }

      namespace {

      }

      我們也可以將一個命名空間分散在不同的文件中,文件包含的處理程序會自動合并他們。因此,限制大量的命名空間在同一個文件中定義是一個很好的編程實踐,就像我們通常單獨為每個類定義一個單獨的文件一樣。

      復制代碼 代碼如下:

      有一點需要注意的是,包含命名空間代碼塊的{是可選的,可以用也可以不用。事實上,只要我們堅持在一個文件中只定義一個命名空間,那么我們就可以完全省略{,這樣也可以使我們的代碼看起來更加簡潔。

      子命名空間

      命名空間可以遵循一個特定的層級,就像我們電腦文件系統中得目錄一樣。子命名空間對于將一個項目結構化尤其特別有用。例如,你的項目需要訪問數據庫,你可能會想將所有數據庫相關的代碼(如數據庫異常處理等)放在同一個子目錄下。

      為了保持靈活性,將子命名空間放在子目錄中是非常明智的做法。這會使你的代碼結構更清晰,而且會使遵循PSR-0標準的autoloaders的使用變得更容易。

      PHP使用反斜線作為命名空間的分隔符,有趣的是,PHP甚至考慮過使用笑臉:)作為命名空間的分隔符。

      子命名空間定義示例:

      代碼如下:

      namespace MyProjectDatabase

      class Connection {

      }

      可以使用盡可能多的子命名空間:

      代碼如下:

      namespace MyProjectBlogAuthHandlerSocial;

      class Twitter {

      }

      有一點需要注意的是,PHP并不支持命名空間的嵌套定義,下面的代碼會導致一個致命錯誤:Namespace declarations cannot be nested。

    【PHP中的命名空間的技巧講解】相關文章:

    插花作品的命名技巧11-19

    口譯中的三個演講技巧講解06-17

    關于php面試寶典及PHP面試技巧08-16

    導游講解技巧04-08

    插花藝術:插花作品的命名技巧05-25

    幾個導游講解技巧07-30

    2016年中考復習最經典技巧講解10-26

    簡單實用的演講技巧講解09-04

    講解足球過人的方法技巧01-05

    網球接發球的技巧講解09-02

    主站蜘蛛池模板: 久久99国产精品尤物| 91麻豆精品国产| 国产午夜精品无码| 久久久久久无码国产精品中文字幕| jiucao在线观看精品| 亚洲国产精品成人精品无码区| 国产精品亚洲美女久久久| 91精品成人免费国产| 一本色道久久88综合日韩精品| 国产精品成人免费观看| 久久精品成人免费网站| 国产精品禁18久久久夂久| 亚洲精品无码不卡在线播放HE| 久久精品国产国产精品四凭| 99久免费精品视频在线观看| 精品国产欧美另类一区| 国语自产少妇精品视频蜜桃| 亚洲av无码乱码国产精品| 四虎成人精品| 精品国偷自产在线视频| 99爱在线视频这里只有精品| 91老司机深夜福利精品视频在线观看 | 99久久99这里只有免费费精品| 亚洲午夜国产精品无码| 欧美日韩精品久久久免费观看| 精品视频在线观看你懂的一区 | 99热成人精品国产免男男| 精品福利一区二区三| 国产成人精品日本亚洲网址| 99久久精品日本一区二区免费| 国产精品免费一区二区三区四区| 久久久久久国产精品免费无码| 久久久精品2019免费观看| 欧美成人精品高清在线观看| 少妇人妻偷人精品无码视频新浪| 亚洲一区爱区精品无码| 人人妻人人澡人人爽人人精品电影| 四虎影视永久在线观看精品| 久久精品国产亚洲av麻豆小说| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 亚洲爆乳精品无码一区二区三区|