资讯专栏INFORMATION COLUMN

Yii源码解读-别名

banana_pi / 1976人阅读

摘要:设置别名的目的特殊的变量常量保存整个应用的所有别名。别名的解析过程先按根别名找到可能保存别名的分支。别名必然以打头。别名解析时,优先匹配较长的别名。使用别名时,要将别名放在最前面,不能放在中间。

Alias

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

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

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

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

在Web应用,yiiaseWebApplication中又定义了2个别名:

@webroot @web 

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

@verdor/yiisoft/extensions.php

这一部分的别名会在yiiaseApplication::bootstrap()中注册完成。

定义与解析别名

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

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

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

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

别名的解析过程

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

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

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

Summary

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

别名必然以 @ 打头。

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

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

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

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

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

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

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

参考

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21433.html

相关文章

  • Yii源码解读-依赖注入(容器)

    摘要:在中使用解耦,有两种注入方式构造函数注入属性注入。对象的实例化解析依赖信息该方法实质上就是通过的反射机制,通过类的构造函数的参数分析他所依赖的单元。 有关概念 依赖倒置原则(Dependence Inversion Principle, DIP) 传统软件设计中,上层代码依赖于下层代码,当下层出现变动时,上层也要相应变化。 DIP的核心思想是:上层定义接口,下层实现这个接口,从而使的下...

    Prasanta 评论0 收藏0
  • Swoft 源码解读

    摘要:官网源码解读号外号外欢迎大家我们开发组定了一个就线下聚一次的小目标里面的框架算是非常重的了这里的重先不具体到性能层面主要是框架的设计思想和框架集成的服务让框架可以既可以快速解决很多问题又可以轻松扩展中的框架有在应该无出其右了这次解读的源码 官网: https://www.swoft.org/源码解读: http://naotu.baidu.com/file/8... 号外号外, 欢迎大...

    weij 评论0 收藏0
  • Yii源码解读 - 事件

    摘要:事件的绑定和解除对事件进行绑定和解绑。使用全局函数作为来进行绑定使用对象的成员函数来进行绑定使用类的静态成员函数进行绑定使用匿名函数上面的数组是用来维护事件数组。事件的级别类级别事件类级别事件用于响应所有类实例的事件。 Yii基础 事件 event 使用事件,可以在特定的时点,触发执行预先设定的一段代码,事件既是代码解耦的一种方式,也是设计业务流程的一种模式。 事件的相关要素 这是一...

    AaronYuan 评论0 收藏0
  • Yii源码解读-属性

    摘要:成员变量可以视为一个可读可写没有任何预处理或后处理的属性。而成员变量由于外部不可见,与属性外的特性不相符,所以不能视为属性。在一些表示数据结构数据集合等简单情况下,且不需读写控制等,可以考虑使用成员变量作为属性,这样可以提高一点效率。 Yii基础 属性 property 属性用于表征类的状态,从访问的形式上看,属性与成员变量没有区别。但是,成员变量是就类的结构构成而言的概念,而属性是就...

    instein 评论0 收藏0
  • Yii源码解读-类自动加载

    摘要:实现的类自动加载,依赖于的,注册一个自己的自动加载函数,并插入到自动加载函数栈的最前面,确保的会被最先调用。首先加载第三方的,再加载的。最后加载的,这样可以保证的优先加载。 实现 Yii的类自动加载,依赖于PHP的spl_autoload_register(), 注册一个自己的自动加载函数(autoloader),并插入到自动加载函数栈的最前面,确保Yii的autoloader会被最先...

    Jeffrrey 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<