<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                #### ******一.## 定義命名空間 :命名空間通過關鍵字namespace 來聲明。如果一個文件中包含命名空間,它必須在其它所有代碼之前聲明命名空間 :命名空間針對 函數、類名、const常量 三部分起作用,并統稱為“元素” :在聲明命名空間之前唯一合法的代碼是用于定義源文件編碼方式的 declare 語句。所有非 PHP 代碼包括空白符都不能出現在命名空間的聲明之前。 :多級空間的最后一級空間就稱為“子級空間” :全局空間:如果沒有定義任何命名空間,所有的類與函數的定義都是在全局空間,與 PHP 引入命名空間概念前一樣。在名稱前加上前綴'\'表示該名稱是全局空間中的名稱,即使該名稱位于其它的命名空間中時也是如此 二.訪問空間元素的三種形式 1.非限定名稱: 2.限定名稱 3.完全限定名稱 file1.php 文件代碼 ``` <?php namespace Foo\Bar\subnamespace; const FOO = 1; function foo() {} class foo { static function staticmethod() {} } ?> ``` file2.php 文件代碼 ~~~ <?php namespace Foo\Bar; include 'file1.php'; const FOO = 2; function foo() {} class foo { static function staticmethod() {} } /* 非限定名稱 */ 本空間下 foo(); // 解析為函數 Foo\Bar\foo foo::staticmethod(); // 解析為類 Foo\Bar\foo ,方法為 staticmethod echo FOO; // 解析為常量 Foo\Bar\FOO /* 限定名稱 */ 相對于Foo\Bar\空間 subnamespace\foo(); // 解析為函數 Foo\Bar\subnamespace\foo subnamespace\foo::staticmethod(); // 解析為類 Foo\Bar\subnamespace\foo, // 以及類的方法 staticmethod echo subnamespace\FOO; // 解析為常量 Foo\Bar\subnamespace\FOO /* 完全限定名稱 */ 相對于全局 \Foo\Bar\foo(); // 解析為函數 Foo\Bar\foo \Foo\Bar\foo::staticmethod(); // 解析為類 Foo\Bar\foo, 以及類的方法 staticmethod echo \Foo\Bar\FOO; // 解析為常量 Foo\Bar\FOO ?> 類似于文件引入 ~~~ 2.5名稱解析遵循下列規則 1. 對完全限定名稱的函數,類和常量的調用在編譯時解析。例如*new \\A\\B*解析為類*A\\B*。 (重點)2. 所有的非限定名稱和限定名稱(非完全限定名稱)根據當前的導入規則在編譯時進行轉換。例如,如果命名空間*A\\B\\C*被導入為*C*,那么對*C\\D\\e()*的調用就會被轉換為*A\\B\\C\\D\\e()*。 (重點)3. 在命名空間內部,**所有的沒有根據導入規則轉換的限定名稱均會在其前面加上當前的命名空間名稱**。例如,在命名空間*A\\B*內部調用*C\\D\\e()*,則*C\\D\\e()*會被轉換為*A\\B\\C\\D\\e()*。 4. 對于函數和常量來說,如果當前命名空間中不存在該函數或常量,PHP 會退而使用全局空間中的函數或常量 2.6## 命名空間的順序 先全局,后use導入,最后才是當前命名空間; use導入會自動把導入空間轉換成全局空間 三.## 命名空間:別名/導入 :php命名空間支持兩種使用別名或導入方式:為類名稱使用別名,或者為命名空間名稱使用別名 ``` <?php namespace cn\\my;? //聲明命名空間 cn\\my class User{ }???? // 當前空間下聲明一個類 namespace shop;?? // 在創建一個空間 use cn\\my;??????? //導入一個命名空間 $my\_User = new my\\User();??? //導入命名空間后可使用限定名稱調用元素 use cn\\my as u;??????????? //命名空間使用別名 $my\_User = new u\\User();?? //使用別名代替空間名 use cn\\my\\User;????????????? //導入一個類 $my\_User = new User();?????? //導入類后可使用非限定名稱調用元素 use cn\\my\\User as myUser;?? // 為類使用別名 $my\_User = new myUser();?? //使用別名代替空間名 ?> ``` 三.5 常量__NAMESPACE__的值是包含當前命名空間名稱的字符串。在全局的,不包括在任何命名空間中的代碼,它包含一個空的字符串 ~~~ namespace MyProject; echo '"', __NAMESPACE__, '"'; // 輸出 "MyProject" ~~~ ~~~ <?php echo '"', __NAMESPACE__, '"'; // 輸出 "" ~~~
                  <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>

                              哎呀哎呀视频在线观看