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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Yii的路徑別名   **別名(Alias)** 可以將別名視為特殊的常量變量,他的作用在于避免將一些文件路徑、URL以硬編碼的方式 寫入代碼中,或者多處出現一長串的文件路徑、URL。 ## 預定義的別名   Yii中,別名以`@`開頭,以區別于正常的文件路徑和URL。Yii中預定義了許多常用的 別名。別名的定義一般放在應用的最開始的階段進行,比如引導階段、初始化階段等。 這樣可以保證后續代碼可以使用這些定義好的別名。   別名一般放在`<project>\common\config\bootstrap.php`, 或者在yii2高級版中`<project>\frontend\config\bootstrap.php`等`bootstrap.php`文件中定義。比如: ```php <?php Yii::setAlias('common', dirname(__DIR__)); Yii::setAlias('frontend', dirname(dirname(__DIR__)) . '/frontend'); Yii::setAlias('backend', dirname(dirname(__DIR__)) . '/backend'); Yii::setAlias('console', dirname(dirname(__DIR__)) . '/console'); ```   在此定義的別名通過入口腳本引入Yii應用中,具體可以看看入口文件`index.php`部分的內容。上面的`<project>/common/config/bootstrap.php`文件定義了`@common`,`@frontend`,`@backend`和`@console`4個別名。 我們也可以自己在`bootstrap.php`中加入自己的別名定義,這是最常運用的定義別名的方式。 ## Yii預定義的別名 Yii預定義的別名主要分布在 `yii\BaseYii` 和 `yii\base\Application` 等類中。 默認情況下,會有: - `@app` ,必須由開發者在配置文件中提供,一般為配置文件的`dirname(__DIR__)` 。 即 `<project>/frontend` 之類的目錄。 - `@vendor` ,一般定義為 `@app/vendor` ,高級模板中則定義為`@app/../vendor` - `@bower` ,定義為 `@vendor/bower` - `@npm` ,定義為 `@vendor/npm` - `@runtime` ,定義為 `@app/runtime` ### 所有預定義的別名[](http://www.digpage.com/aliases.html#id3 "Permalink to this headline") 小結一下,默認預定義別名一共有12個,其中路徑別名11個,URL別名只有`@web`1個: * `@web`URL別名,表示當前應用的根URL,主要用于前端; * `@yii`表示Yii框架所在的目錄,也是`yii\BaseYii`類文件所在的位置; * `@app`表示正在運行的應用的根目錄,一般是`<project>/frontend`; * `@vendor`表示Composer第三方庫所在目錄,一般是`@app/vendor`或`@app/../vendor`; * `@bower`表示Bower第三方庫所在目錄,一般是`@vendor/bower`; * `@npm`表示NPM第三方庫所在目錄,一般是`@vendor/npm`; * `@runtime`表示正在運行的應用的運行時用于存放運行時文件的目錄,一般是`@app/runtime`; * `@webroot`表示正在運行的應用的入口文件`index.php`所在的目錄,一般是`@app/web`; * `@common`表示通用文件夾; * `@frontend`表示前臺應用所在的文件夾; * `@backend`表示后臺應用所在的文件夾; * `@console`表示命令行應用所在的文件夾; * 其他使用Composer安裝的Yii擴展注冊的二級別名,比如在`extensions.php`中key為`alias`的值。   這樣,在整個Yii應用中,只要使用上述別名,就可方便、且統一地表示特定的路徑或URL。 ## 別名的定義過程 ### 使用其他的方式定義別名 ``` // 使用一個路徑定義一個路徑別名 Yii::setAlias('@foo', 'path/to/foo'); // 使用一個URL定義一個URL別名 Yii::setAlias('@bar', 'http://www.domain.com'); // 使用一個別名定義另一個別名 Yii::setAlias('@fooba', '@foo/ba'); // 定義一個“二級”別名 Yii::setAlias('@foo/bar', 'path/to/foo/bar'); ``` ### 別名規范化   如果要定義的別名`$alias`并非以`@`打頭,自動為這個別名加上`@`前綴。 總之,只要是別名,必然以`@`打頭。下面的兩個語句,都定義了相同的別名`@foo` ```php Yii::setAlias('foo', 'path/to/foo'); Yii::setAlias('@foo', 'path/to/foo'); ``` ### 獲取根別名   `$alias`的根別名,就是`@`加上第一個`/`之間地內容,以`$root`表示。 這里可以看出,別名是分層次的。下面3個語句的根別名都是`@foo ```php Yii::setAlias('@foo', 'path/to/some/where'); Yii::setAlias('@foo/bar', 'path/to/some/where'); Yii::setAlias('@foo/bar/qux', 'path/to/some/where'); ``` ### 新定義別名還是刪除別名   如果傳入的`$path`不是`null`,說明是正常的別名定義。 對于正常的別名定義,就是往`BaseYii::$aliases[]`里寫入信息。 而如果`$path`為`null`,說明是要刪除別名: ```php // 定義別名@foo Yii::setAlias('@foo', 'path/to/some/where'); // 刪除別名@foo Yii::setAlias('@foo', null); ``` ### 解析`$path`   對于新定義別名,既然`$path`不為`null`,那么先進行解析: 如果`$path`以`@`打頭,說明這也是一個別名,則調用`Yii::getAlias()`, 并將解析后的結果作為新的`$path`; 如果`$path`不以`@`打頭,說明是一個正常的path 或 URL, 那么去除`$path`末尾的`/`和`\`。 ### 別名的寫入   對于全新的別名,也即其根別名是新的,`BaseYii::aliases[$root]`不存在。 那么全新別名的寫入分兩種情況: 如果全新別名本身就是根別名,那么直接`BaseYii::aliases[$alias]`=`$path`; 而如果全新的別名并非是一個根別名,即形如`@foo/bar`帶有二級、三級等路徑的,`BaseYii::aliases[$root]=[$alias=>$path]`。比如: ```php // BaseYii::aliases['@foo'] = ['@foo/bar' => 'path/to/foo/bar'] Yii::setAlias('@foo/bar', 'path/to/foo/bar'); // BaseYii::aliases['@qux'] = 'path/to/qux' Yii::setAlias('@qux', 'path/to/qux'); ``` ### 別名的刪除   傳入的 `$path` 為 `null` 表示要刪除別名。 Yii使用PHP的 `unset()` 注銷 `BaseYii::$aliases[]` 數組中的對應元素, 達到刪除別名的目的。注意刪除別名后,不需要調用 `krsort()`對數組進行處理。 參考:[Yii約定Alias別名](http://www.digpage.com/aliases.html)
                  <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>

                              哎呀哎呀视频在线观看