Yii源码解读-别名

本文介绍了Yii框架中别名的定义与解析过程,包括如何设置及使用别名,以及Yii预定义的一些常用别名。文章还详细解释了别名在存储时的结构及其重要特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Alias

设置别名的目的:特殊的变量常量

yii\BaseYii::$aliases保存整个Yii应用的所有别名。

yii\base\Application的构造函数__construct()中调用preInit方法,该方法预定义了5个别名:

@app , @vendor @bower @npm , @runtime 

在Web应用,yii\base\Web\Application中又定义了2个别名:

@webroot @web 

最后一个藏有别名的地方:

@verdor/yiisoft/extensions.php

这一部分的别名会在yii\base\Application::bootstrap()中注册完成。

定义与解析别名

Yii::$aliases[]来保存别名

Yii::setAlias('@alias', 'path')来定义别名。

这个定义的本质是:BaseYii::setAlias()

Yii::getAlias()来调用别名。

别名的解析过程

  • 先按根别名找到可能保存别名的分支。

  • 遍历这个分支下的所有树叶,优先匹配长别名。

  • 将找到的最长匹配别名替换成其所对应的值,再接上 @alias 的后半截,成为新的别名。

Summary

  • 别名需在使用前定义,因此通常来讲,定义别名应当在放在应用的初始化阶段。

  • 别名必然以 @ 打头。

  • 别名的定义可以使用之前已经定义过的别名。

  • 别名在储存时,至多只分成两级,第一级的键是根别名。 第二级别名的键是完整的别名,而不是去除根别名后剩下的所谓的“二级”别名。

  • Yii通过分层的树结构来保存别名最主要是为高效检索作准备。

  • 很多地方可以直接使用别名,而不用调用 Yii::getAlias() 转换成真实的路径或URL。

  • 别名解析时,优先匹配较长的别名。

  • Yii预定义了许多常用的别名供编程时使用。

  • 使用别名时,要将别名放在最前面,不能放在中间。

参考

  1. http://www.digpage.com/convention.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值