<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## PHP命名空間 ###1. 什么是命名空間? > 從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。 例如,在操作系統中目錄用來將相關文件分組,對于目錄中的文件來說,它就扮演了命名空間的角色。 具體舉個例子,文件 foo.txt 可以同時在目錄/home/one 和 /home/other 中存在,但在同一個目錄中不能存在兩個 foo.txt 文件。 另外,在目錄 /home/one 外訪問 foo.txt 文件時, 我們必須將目錄名以及目錄分隔符放在文件名之前得到 /home/one/foo.txt。這個原理應用到程序設計領域就是命名空間 的概念。 ### 2. 命名空間解決的問題 > 1. 用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突(解決名字沖突) > 2. 為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性。 ### 3. 如何使用命名空間及使用中要注意的事項 > 創建命名空間需要使用namespace關鍵詞。 ~~~ <?php // 創建 namespace Blog; ?> ~~~ >[danger] 創建當前腳本第一個命名空間前面不能有任何代碼,下面的寫法都是錯誤的: ~~~ <?php $name = "test"; namespace Article; ?> ~~~ ~~~ <html></html> <?php namespace Article; ?> ~~~ >[info] 為什么強調說第一個命名空間呢?因為同一個腳本中可以創建多個命名空間。在不同的空間中,可以調用不同的元素。如: ~~~ <?php //創建一個名為'Article'的命名空間 namespace Article; //此Comment屬于Article空間的元素 class Comment{} //創建一個名為MessageBoard的命名空間 namespace MessageBoard; //此Comment屬于MessageBoard命名空間 class Comment{} ?> ~~~ >[info] 子命名空間,命名空間的調用語法像文件路徑一樣,這允許我們自定義子空間來描述各個空間之間的關系。如果上面Article和MessageBoard都同屬于一個Blog項目內,那么我們用命名空間就得這樣表示: ~~~ <?php //創建一個名為'Article'的命名空間 namespace Blog\Article; //此Comment屬于Article空間的元素 class Comment{} //創建一個名為MessageBoard的命名空間 namespace Blog\MessageBoard; //此Comment屬于MessageBoard命名空間 class Comment{} //調用當前空間的類,即Blog\MessageBorad下的Comment $comment = new Comment(); //調用Blog\Article空間的類 $article_comment = new \Blog\Article\Comment() ?> ~~~ >[info] 公共空間, 沒有用namespace限制命名空間,則文件里的函數及類的命名空間則為公共空間。如我一個助手文件UtilityHelper.php文件: ~~~ <?php function dd(){} class CurlHelper{} ?> ~~~ >[info] 當公共空間文件引入非公共空間文件時,該腳本里的函數不會屬于引入的命名空間,它始終處于公共空間內。 ~~~ <?php namespace Blog; require 'UtilityHelper.php'; //實例化例時,它僅會在指定或當前的命名空間下查找,如: $curl = new CurlHelper();//這個僅會查找當前命名空間,Blog\CurlHelper,結果出現了致命錯誤; $curl = new \CurlHelper();//會有公共空間查找,正確! ~~~ >[info] 調用公共空間的方式就是在直接元素的名稱前面加\即可。 ### 4. 名稱術語 >[info] 非限定名稱,或不含前綴的類名稱,其實就是目錄路徑中的相對路徑。如: ~~~ <?php namespace Blog; class Comment{} //這就是非限定名稱,它調用的是當前命名空間Blog下的Comment類 $comment = new Comment(); ?> ~~~ >[info] 限制名稱,或包含前綴的名稱。其實就是類名稱的最左邊沒有反斜線。如: ~~~ <?php namespace Blog; class Comment{} //這就是限定名稱,它調用的是當前命名空間Blog\Article下的Comment類 $comment = new Article\Comment(); ?> ~~~ >[info] 完全限定名稱,或包含全局前綴的名稱(反斜線)。其實就是類名的最左邊加了反斜線。如: ~~~ <?php namespace Blog; class Comment{} //這就是完全限定名稱,它調用的是當前命名空間Article下的Comment類 $comment = new \Article\Comment(); ?> ~~~ ### 5. 導入命名空間(use)及命名空間的別名(as) >[info] 使用use導入命名空間 ~~~ <?php namespace Blog; //導入命名空間 use abc; //如果導入的命名空間出現沖突時,用as別名,如 use Blog\abc as Babc; ?> ~~~ <embed src="http://www.tudou.com/v/9eT0KMlnZNc/&bid=05&rpid=1059277519&resourceId=1059277519_05_05_99/v.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="865" height="523"></embed> 百度下載地址:http://pan.baidu.com/s/1geTnrpD TP5粉絲群: 543608226 TP5底層答疑群: 451935051
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看