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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # 命名空間概述 在PHP中,命名空間用來解決在編寫類庫或應用程序時創建可重用的代碼(如類或函數時),碰到的兩類問題: * 用戶編寫的代碼與PHP內部的類/函數/常量或者第三方類/函數/常量之間的名字沖突 * 為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提升源代碼的可讀性 >[danger] 名為PHP或php的命名空間,以及以這些名字開頭的命名空間(例如PHP\Classes)被保留用作語言內核使用,而不應該在用戶空間的代碼中使用。 # 定義命名空間 (PHP 5 >= 5.3.0, PHP 7) 雖然任意合法的PHP代碼都可以包含在命名空間中,但只有以下類型的代碼受命名空間的影響,它們是:類(包括抽象類和traits)、接口、函數和常量。 命名空間通過關鍵字namespace 來聲明(所有非 PHP 代碼包括空白符都不能出現在命名空間的聲明之前)。 ## 聲明單個命名空間 ~~~ <?php namespace MyProject; const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } ?> ~~~ ## 定義子命名空間 與目錄和文件的關系很象,PHP 命名空間也允許指定層次化的命名空間的名稱。因此,命名空間的名字可以使用分層次的方式定義 ## 聲明分層次的單個命名空間 ~~~ <?php namespace MyProject\Sub\Level; const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } ?> ~~~ ## 在同一個文件中定義多個命名空間 也可以在同一個文件中定義多個命名空間。在同一個文件中定義多個命名空間有兩種語法形式。 ### 定義多個命名空間,大括號語法 ~~~ <?php namespace MyProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } namespace AnotherProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } ?> ~~~ ### 定義多個命名空間,簡單組合語法(不推薦) ~~~ <?php namespace MyProject; const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } namespace AnotherProject; const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } ?> ~~~ >[info] 在實際的編程實踐中,非常不提倡在同一個文件中定義多個命名空間。這種方式的主要用于將多個 PHP 腳本合并在同一個文件中。 [TOC] ## 使用命名空間 **在文件系統中訪問一個文件有三種方式** * 相對文件名形式如foo.txt。它會被解析為 currentdirectory/foo.txt,其中 currentdirectory 表示當前目錄。因此如果當前目錄是 /home/foo,則該文件名被解析為/home/foo/foo.txt。 * 相對路徑名形式如subdirectory/foo.txt。它會被解析為 currentdirectory/subdirectory/foo.txt。 * 絕對路徑名形式如/main/foo.txt。它會被解析為/main/foo.txt。 **PHP 命名空間中的元素使用同樣的原理** * 非限定名稱,或不包含前綴的類名稱,例如 `$a=new foo();` 或 `foo::staticmethod();`。如果當前命名空間是 `currentnamespace`,foo 將被解析為 `currentnamespace\foo`。如果使用 foo 的代碼是全局的,不包含在任何命名空間中的代碼,則 foo 會被解析為foo。 警告:如果命名空間中的函數或常量未定義,則該非限定的函數名稱或常量名稱會被解析為全局函數名稱或常量名稱。詳情參見 使用命名空間:[后備全局函數名稱/常量名稱](http://php.net/manual/zh/language.namespaces.fallback.php)。 * 限定名稱,或包含前綴的名稱,例如 `$a = new subnamespace\foo();` 或 `subnamespace\foo::staticmethod();`。如果當前的命名空間是 currentnamespace,則 foo 會被解析為 `currentnamespace\subnamespace\foo`。如果使用 foo 的代碼是全局的,不包含在任何命名空間中的代碼,foo 會被解析為`subnamespace\foo`。 * 完全限定名稱,或包含了全局前綴操作符的名稱,例如, `$a = new \currentnamespace\foo();` 或 `\currentnamespace\foo::staticmethod();`。在這種情況下,foo 總是被解析為代碼中的文字名`(literal name)currentnamespace\foo`。
                  <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>

                              哎呀哎呀视频在线观看