[TOC]
# 別名
別名用來表示文件路徑和url,目的是避免了在代碼中硬編碼一些絕對路徑和URL,一個別名必須以@開頭
# 別名設置
用`Yii::setAlias()`方法來設置.例如
~~~
//文件路徑別名
Yii::setAlias('@foo', '/path/foo');
//URL別名
Yii::setAlias('@bar', 'http://www.example.com');
~~~
## 新定義別名還是刪除別名
如果傳入的`$path`不是`null`,說明是正常的別名定義。 對于正常的別名定義,就是往`BaseYii::$aliases[]`里寫入信息。 而如果`$path`為`null`,說明是要刪除別名:
~~~
// 定義別名@foo
Yii::setAlias('@foo', 'path/to/some/where');
// 刪除別名@foo
Yii::setAlias('@foo', null);
~~~
**別名的刪除**
傳入的`$path`為`null`表示要刪除別名。 Yii使用PHP的`unset()`注銷`BaseYii::$aliases[]`數組中的對應元素, 達到刪除別名的目的。注意刪除別名后,不需要調用`krsort()`對數組進行處理
# 別名的使用
~~~
$cache = new FileCache([
'cachePath' => '@runtime/cache',
])
~~~
# Advanced模板中已經預定義的別名
~~~
@yii 框架目錄
@app application的路徑
一些目錄的別名
@webroot web root的目錄
~~~
# 預定義別名
小結一下,默認預定義別名一共有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`的值
- 目錄
- 配置
- 簡介
- 別名
- gii
- 配置項
- 模型
- 簡介
- 增刪改查
- AR和model
- 模型事件
- 場景
- query查詢
- 增刪改
- AR查詢器
- 模型關系定義
- AR模型連表查詢
- fields
- where拼接
- 模塊
- 創建模塊
- 控制器
- 表單
- 跳轉
- 響應
- 驗證器
- Action
- 組件
- url
- 分頁
- 驗證碼
- 緩存
- 文件上傳
- 預啟動組件
- 事件
- 自定義組件
- redis
- 日志
- 行為
- cookie和session
- 基礎知識
- 創建一個類
- 配置一個類
- object基類
- component組件類特性
- phpstorm無法更改php等級
- url地址美化
- 過濾器
- 請求處理
- 請求組件
- 響應組件
- header
- 用戶登錄
- 實現IdentityInterface接口
- 登錄
- 自動檢測登錄
- 獲取用戶信息
- 訪問行為追蹤
- phpstorm+postman斷點調試