资讯专栏INFORMATION COLUMN

yii2代码学习-BaseYii

chavesgu / 723人阅读

摘要:框架的版本已经发布,版本最低要求是,将会在今年早些时候推出正式版。阅读的代码,能学到很多东西,代码写的很优雅,用到了很多版本的新特性。

yii框架的v-2.0-alpha版本已经发布,PHP版本最低要求是PHP-5.4,将会在今年早些时候推出正式版。阅读yii2的代码,能学到很多东西,代码写的很优雅,用到了很多php-5.4版本的新特性。

BaseYii这个类,在yii2框架中被称作 core help class,在yii2框架中被很多类用到,它的namespace是yii.详情参照下图:

先说property:
他们都是静态的成员变量

classMap
yii框架自动加载机制使用,是一个关联数组,key值为首字母不为的类名(即namespace+classname的类全名),value是关联的类定义文件路径,这个路径也可以是路径别名(在yii中以@开始)

app
console或者web应用的类实例

aliases
注册的别名路径,初始值
$aliases = ["@yii" => DIR];

objectConfg
yii是组件式框架,objectConfig是使用createObject()创建组件或者类对象使用的配置,这个是关联数组
key值是首字母不为的类名,value值是一个数组,使用createObject方法的时候会把value值赋给要创建的类的property

BaseYii的成员函数也都是静态方法

getVersion()返回版本信息,powered()返回版权信息,t是多语言版本翻译函数,这三个在实际开发中很少会用到,不再赘述

getAlias()
函数原型是: getAlias($alias, $throwException = true)
参数$alias是路径别名,功能是获取别名的真实路径,如果没有找到别名的路径, $throwException为true抛出异常
这个方法索引静态成员变量$aliases查找别名对应的路径

getRootAlias()
函数原型: public static function getRootAlias($alias)
返回别名的root部分,举个例子,别名@app/controller,就会返回app

setAlias()
函数原型:public static function setAlias($alias, $path)
向静态成员变量$aliase注册一个别名,$alias是别名名称,$path是别名路径
大概讲一下设置别名的流程,明白设置别名的原理:
首先检查$alias的值首字母是不是@,如果不是,添加@到值的首位
查找/出现的位置,确定别名$alias的root别名,如果$alias中包含/,则root的值为substr($alias, 0, $pos),否则就是本身
$path如果为空会释放已存在的别名
$path不为空,如果存在root别名在静态成员变量$aliases中,则把别名放在子别名中,否则就添加新的别名

autoload()
函数原型:public static function autoload($className)
yii类自动加载机制,从静态成员变量$classMap索引$className
实现的具体逻辑参考源代码

createObject()
函数原型:public static function createObject($config)
实现组件的一个方法,创建一个组件(类)的方法,$config如果是一个字符串,那它必须是组件或者类的名称,如果是一个数组,必须设置
$config["class"],假设$config的值是 $config["class"=>"test", ["v1"=>1,"v2"=>2]]
检查静态成员变量$objectConfig是不是设置过$configConfig["test"],如果有,$configConfig["test"]的合并到config中去
最后会根据传入的参数个数来决定是使用反射或者new来创建组件实例

configure()
函数原型:public static function configure($object, $properties)
设置对象的属性

trace ,error,warning,info.beginProfile,endProfile是日志相关操作,不再详细叙述。

BaseYii就是一个helper类,里面的方法变量贯穿在整个yii框架里,是框架的纲要,在这个类里,实现了类的自动加载机制,实现了组件的创建配置机制

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

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

相关文章

  • CLI模式下Yii2的log问题追踪

    摘要:继续跟踪前,先看看类的方法组件初始化时,注册回调函数,确保脚本执行完毕时消息被正确打印。将示例函数的方法改成然后在脚本执行过程中,按下,或者通过命令发送信号,日志都正常输出,表明中的回调函数被正常调用。 转载请注明出处:https://tlanyan.me/trace-log-... 命令行下运行长时间任务,发现Yii2的log组件不能正常输出日志。空闲之余逐步追踪问题,终于发现原因...

    ztyzz 评论0 收藏0
  • Yii2 完整框架分析(详细)

    摘要:行为是如何注册到组件的呢通过注册行为之后,实际上是添加到了的属性中那么行为中的属性,就添加到了,中进行直接调用行为里面的方法的时候,实际上触发了里面的魔术方法继承链图解 Yii2 框架Trace 准备 了解composer的autoload psr0 psr4 加载机制 了解spl_autoload_register 了解依赖注入的实现原理反射 了解常用魔术方法__set,__get...

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

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

    Jeffrrey 评论0 收藏0
  • YII2快速学习笔记

    摘要:高性能始终是的首要目标之一。版是上代的老版本,现在处于维护状态。版是一个完全重写的版本,采用了最新的技术和协议,包括依赖包管理器代码规范命名空间特质等等。所以,我们学习版本。启用本镜像服务系统全局配置即将配置信息添加到的全局配置文件中。 工作中需要用到YII框架,于是乎,系统的学习下这套框架,详细教程请看考该站完整系列:YII2教程 一、YII简介 1、什么是YII Yii 是一个高性...

    kbyyd24 评论0 收藏0
  • Yii2:教你一步步写一个微信商城(一)

    摘要:本教程主要基于大神的开源商城,为大家解读的源码,由于原版商城更多是针对国际业务,因此本教程会适当修改,使其更适合于微信环境。 本教程主要基于 terry 大神的开源商城 Fecshop,为大家解读 Fecshop 的源码,由于原版商城更多是针对国际业务,因此本教程会适当修改,使其更适合于微信环境。由于商城源码复杂,本教程将长期更新。本人也是边学习边写这份教程,过程中难免会出现错误,还请...

    Invoker 评论0 收藏0

发表评论

0条评论

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