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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 命名空間 `ThinkPHP5.1`符合`PSR-4`的自動加載規范,內置不再提供類庫文件的導入方法,采用命名空間方式定義和自動加載類庫文件,有效的解決了多模塊和`Composer`類庫之間的命名空間沖突問題,并且實現了更加高效的類庫自動加載機制。 >[danger] 如果不清楚命名空間的基本概念,可以參考PHP手冊:[PHP命名空間](http://www.php.net/manual/zh/language.namespaces.php) >[danger] 特別注意的是,如果你需要調用PHP內置的類庫,或者第三方沒有使用命名空間的類庫,記得在實例化類庫的時候加上 `\`,例如: > ~~~ > // 錯誤的用法 > $class = new stdClass(); > $xml = new SimpleXmlElement($xmlstr); > // 正確的用法 > $class = new \stdClass(); > $xml = new \SimpleXmlElement($xmlstr); > ~~~ 從ThinkPHP`5.0`開始,遵循`PSR-4`自動加載規范,只需要給類庫正確定義所在的命名空間,并且命名空間的路徑與類庫文件的目錄一致,那么就可以實現類的自動加載,從而實現真正的惰性加載。 例如,`\think\cache\driver\File`類的定義為: ~~~ namespace think\cache\driver; class File { } ~~~ 如果我們實例化該類的話,應該是: ~~~ $class = new \think\cache\driver\File(); ~~~ 系統會自動加載該類對應路徑的類文件,其所在的路徑是?`thinkphp/library/think/cache/driver/File.php`。 >[danger] `5.1`版本默認的目錄規范是小寫,類文件命名是駝峰法,并且首字母大寫。 ## 根命名空間(類庫包) 根命名空間是一個關鍵的概念,以上面的`\think\cache\driver\File`類為例,`think`就是一個根命名空間,其對應的初始命名空間目錄就是系統的類庫目錄(`thinkphp/library/think`),我們可以簡單的理解一個根命名空間對應了一個類庫包。 系統內置的幾個根命名空間(類庫包)如下: |名稱|描述|類庫目錄| |---|---|---| |think|系統核心類庫|thinkphp/library/think| |traits|系統Trait類庫|thinkphp/library/traits| |app|應用類庫|application| 如果需要增加新的根命名空間,我們只需要把自己的類庫包目錄放入`extend`目錄,就可以自動注冊對應的命名空間,例如: 我們在`extend`目錄下面新增一個`my`目錄,然后定義一個`\my\Test`類(?類文件位于`extend/my/Test.php`)如下: ~~~ namespace my; class Test { public function sayHello() { echo 'hello'; } } ~~~ 我們就可以直接實例化和調用: ~~~ $Test = new \my\Test(); $Test->sayHello(); ~~~ 如果你的擴展類庫不希望放入系統默認的`extend`目錄,就需要在應用配置文件中設置`root_namespace`注冊根命名空間,例如下面注冊了`my`和`org`兩個根命名空間到`application/extend`目錄下面。 ~~~ 'root_namespace' => [ 'my' => '../application/extend/my/', 'org' => '../application/extend/org/', ] ~~~ ## 應用類庫包 為了避免和`Composer`自動加載的類庫存在沖突 ,應用類庫的命名空間的根都統一以`app`命名,例如: ~~~ namespace app\index\model; class User extends \think\Model { } ~~~ 其類文件位于?`application/index/model/User.php`。 ~~~ namespace app\admin\event; class User { } ~~~ 其類文件位于?`application/admin/event/User.php`。 如果覺得`app`根命名空間不合適或者有沖突,可以更改環境變量`APP_NAMESPACE`,如果你定義了`.env`文件的話,可以在里面添加: ~~~ APP_NAMESPACE = application ~~~ 定義后,應用類庫的命名空間改為: ~~~ <?php namespace application\index\model; class User extends \think\Model { } ~~~ >[danger]#### 本手冊后續的章節,均建立在你已經了解PHP命名空間的基礎之上,如果不掌握請自行補充PHP基礎,對命名空間的缺乏理解會成為你學習ThinkPHP的最大障礙。
                  <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>

                              哎呀哎呀视频在线观看