• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

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

        時(shí)間:2024-04-29 06:12:53 PHP 我要投稿
        • 相關(guān)推薦

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

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

          命名空間(namespace)的概念

          代碼如下:

          當(dāng)在字符串中使用命名空間名字的時(shí)候,一定不要忘了轉(zhuǎn)義

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

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

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

          正在使用命名空間

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

          全局命名空間中包含了所有PHP內(nèi)部的定義,如echo()、mysqli_connect()和Exception類。由于全局命名空間并沒有獨(dú)立的標(biāo)識(shí)名,所以它經(jīng)常被成為全局空間(global space)。

          定義命名空間

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

          定義命名空間很簡單,只需要使用關(guān)鍵字namespace即可。命名空間的名字需要遵循PHP文件中其他標(biāo)識(shí)符的命名規(guī)則。

          下面是定義一個(gè)命名空間的示例:

          代碼如下:

          namespace MyNamespace{

          class Test{

          }

          }

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

          代碼如下:

          namespace {

          class Test{

          }

          }

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

          代碼如下:

          namespace MyNamespace {

          }

          namespace MySecondNamespace {

          }

          namespace {

          }

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

          復(fù)制代碼 代碼如下:

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

          子命名空間

          命名空間可以遵循一個(gè)特定的層級(jí),就像我們電腦文件系統(tǒng)中得目錄一樣。子命名空間對(duì)于將一個(gè)項(xiàng)目結(jié)構(gòu)化尤其特別有用。例如,你的項(xiàng)目需要訪問數(shù)據(jù)庫,你可能會(huì)想將所有數(shù)據(jù)庫相關(guān)的代碼(如數(shù)據(jù)庫異常處理等)放在同一個(gè)子目錄下。

          為了保持靈活性,將子命名空間放在子目錄中是非常明智的做法。這會(huì)使你的代碼結(jié)構(gòu)更清晰,而且會(huì)使遵循PSR-0標(biāo)準(zhǔn)的autoloaders的使用變得更容易。

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

          子命名空間定義示例:

          代碼如下:

          namespace MyProjectDatabase

          class Connection {

          }

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

          代碼如下:

          namespace MyProjectBlogAuthHandlerSocial;

          class Twitter {

          }

          有一點(diǎn)需要注意的是,PHP并不支持命名空間的嵌套定義,下面的代碼會(huì)導(dǎo)致一個(gè)致命錯(cuò)誤:Namespace declarations cannot be nested。

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【PHP中的命名空間的技巧講解】相關(guān)文章:

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

        口譯中的三個(gè)演講技巧講解06-17

        關(guān)于php面試寶典及PHP面試技巧08-16

        導(dǎo)游講解技巧04-08

        插花藝術(shù):插花作品的命名技巧05-25

        幾個(gè)導(dǎo)游講解技巧07-30

        2016年中考復(fù)習(xí)最經(jīng)典技巧講解10-26

        簡單實(shí)用的演講技巧講解09-04

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

        網(wǎng)球接發(fā)球的技巧講解09-02

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 在线亚洲精品国产二区欧美 | 午夜福利一区美女 | 日韩在线一级还看 | 亚洲国产精品第一页 | 亚洲熟女综合色一区二区三区 | 夜鲁夜鲁夜鲁很鲁在线视频 |

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

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

              命名空間(namespace)的概念

              代碼如下:

              當(dāng)在字符串中使用命名空間名字的時(shí)候,一定不要忘了轉(zhuǎn)義

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

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

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

              正在使用命名空間

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

              全局命名空間中包含了所有PHP內(nèi)部的定義,如echo()、mysqli_connect()和Exception類。由于全局命名空間并沒有獨(dú)立的標(biāo)識(shí)名,所以它經(jīng)常被成為全局空間(global space)。

              定義命名空間

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

              定義命名空間很簡單,只需要使用關(guān)鍵字namespace即可。命名空間的名字需要遵循PHP文件中其他標(biāo)識(shí)符的命名規(guī)則。

              下面是定義一個(gè)命名空間的示例:

              代碼如下:

              namespace MyNamespace{

              class Test{

              }

              }

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

              代碼如下:

              namespace {

              class Test{

              }

              }

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

              代碼如下:

              namespace MyNamespace {

              }

              namespace MySecondNamespace {

              }

              namespace {

              }

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

              復(fù)制代碼 代碼如下:

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

              子命名空間

              命名空間可以遵循一個(gè)特定的層級(jí),就像我們電腦文件系統(tǒng)中得目錄一樣。子命名空間對(duì)于將一個(gè)項(xiàng)目結(jié)構(gòu)化尤其特別有用。例如,你的項(xiàng)目需要訪問數(shù)據(jù)庫,你可能會(huì)想將所有數(shù)據(jù)庫相關(guān)的代碼(如數(shù)據(jù)庫異常處理等)放在同一個(gè)子目錄下。

              為了保持靈活性,將子命名空間放在子目錄中是非常明智的做法。這會(huì)使你的代碼結(jié)構(gòu)更清晰,而且會(huì)使遵循PSR-0標(biāo)準(zhǔn)的autoloaders的使用變得更容易。

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

              子命名空間定義示例:

              代碼如下:

              namespace MyProjectDatabase

              class Connection {

              }

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

              代碼如下:

              namespace MyProjectBlogAuthHandlerSocial;

              class Twitter {

              }

              有一點(diǎn)需要注意的是,PHP并不支持命名空間的嵌套定義,下面的代碼會(huì)導(dǎo)致一個(gè)致命錯(cuò)誤:Namespace declarations cannot be nested。