<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 類自動加載(Autoloading) Yii 依靠[類自動加載機制](http://www.php.net/manual/en/language.oop5.autoload.php)來定位和包含所需的類文件。它提供一個高性能且完美支持[PSR-4 標準](https://github.com/php-fig/fig-standards/blob/master/proposed/psr-4-autoloader/psr-4-autoloader.md)([中文漢化](https://github.com/hfcorriez/fig-standards/blob/zh_CN/%E6%8E%A5%E5%8F%97/PSR-4-autoloader.md))的自動加載器。該自動加載器會在引入框架文件?`Yii.php`?時安裝好。 > 注意:為了簡化敘述,本篇文檔中我們只會提及類的自動加載。不過,要記得文中的描述同樣也適用于接口和Trait(特質)的自動加載哦。 ## 使用 Yii 自動加載器 要使用 Yii 的類自動加載器,你需要在創建和命名類的時候遵循兩個簡單的規則: * 每個類都必須置于命名空間之下 (比如?`foo\bar\MyClass`)。 * 每個類都必須保存為單獨文件,且其完整路徑能用以下算法取得: ~~~ // $className 是一個開頭包含反斜杠的完整類名(譯注:請自行谷歌:fully qualified class name) $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); ~~~ 舉例來說,若某個類名為?`foo\bar\MyClass`,對應類的文件路徑[別名](http://www.yiichina.com/doc/guide/2.0/concept-aliases)會是?`@foo/bar/MyClass.php`。為了讓該別名能被正確解析為文件路徑,`@foo`?或?`@foo/bar`?中的一個必須是[根別名](http://www.yiichina.com/doc/guide/2.0/concept-aliases#defining-aliases)。 當我們使用[基本應用模版](http://www.yiichina.com/doc/guide/2.0/start-installation)時,可以把你的類放置在頂級命名空間?`app`?下,這樣它們就可以被 Yii 自動加載,而無需定義一個新的別名。這是因為?`@app`?本身是一個[預定義別名](http://www.yiichina.com/doc/guide/2.0/concept-aliases#predefined-aliases),且類似于?`app\components\MyClass`?這樣的類名,基于我們剛才所提到的算法,可以正確解析出?`AppBasePath/components/MyClass.php`?路徑。 在[高級應用模版](http://www.yiichina.com/doc/guide/2.0/tutorial-advanced-app)里,每一邏輯層級會使用他自己的根別名。比如,前端層會使用?`@frontend`?而后端層會使用?`@backend`。因此,你可以把前端的類放在?`frontend`?命名空間,而后端的類放在?`backend`。 這樣這些類就可以被 Yii 自動加載了。 ## 類映射表(Class Map) Yii 類自動加載器支持**類映射表**功能,該功能會建立一個從類的名字到類文件路徑的映射。當自動加載器加載一個文件時,他首先檢查映射表里有沒有該類。如果有,對應的文件路徑就直接加載了,省掉了進一步的檢查。這讓類的自動加載變得超級快。事實上所有的 Yii 核心類都是這樣加載的。 你可以用?`Yii::$classMap`?方法向映射表中添加類, ~~~ Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; ~~~ [別名](http://www.yiichina.com/doc/guide/2.0/concept-aliases)可以被用于指定類文件的路徑。你應該在[引導啟動](http://www.yiichina.com/doc/guide/2.0/runtime-bootstrapping)的過程中設置類映射表,這樣映射表就可以在你使用具體類之前就準備好。 ## 用其他自動加載器 因為 Yii 完全支持 Composer 管理依賴包,所以推薦你也同時安裝 Composer 的自動加載器,如果你用了一些自帶自動加載器的第三方類庫,你應該也安裝下它們。 當你同時使用其他自動加載器和 Yii 自動加載器時,應該在其他自動加載器安裝成功**之后**,再包含?`Yii.php`?文件。這將使 Yii 成為第一個響應任何類自動加載請求的自動加載器。舉例來說,以下代碼提取自[基本應用模版](http://www.yiichina.com/doc/guide/2.0/start-installation)的[入口腳本](http://www.yiichina.com/doc/guide/2.0/structure-entry-scripts)?。第一行安裝了 Composer 的自動加載器,第二行才是 Yii 的自動加載器: ~~~ require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); ~~~ 你也可以只使用 Composer 的自動加載,而不用 Yii 的自動加載。不過這樣做的話,類的加載效率會下降,且你必須遵循 Composer 所設定的規則,從而讓你的類滿足可以被自動加載的要求。 > 補充:若你不想要使用 Yii 的自動加載器,你必須創建一個你自己版本的?`Yii.php`?文件,并把它包含進你的[入口腳本](http://www.yiichina.com/doc/guide/2.0/structure-entry-scripts)里。 ## 自動加載擴展類 Yii 自動加載器支持自動加載[擴展](http://www.yiichina.com/doc/guide/2.0/structure-extensions)的類。唯一的要求是它需要在?`composer.json`?文件里正確地定義?`autoload`?部分。請參考[Composer 文檔(英文)](https://getcomposer.org/doc/04-schema.md#autoload)([中文漢化](https://github.com/5-say/composer-doc-cn/blob/master/cn-introduction/04-schema.md#autoload)),來了解如何正確描述?`autoload`?的更多細節。 在你不使用 Yii 的自動加載器時,Composer 的自動加載器仍然可以幫你自動加載擴展內的類。
                  <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>

                              哎呀哎呀视频在线观看