[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断点调试