前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >yii2代码学习-BaseYii

yii2代码学习-BaseYii

作者头像
luxixing
发布2019-05-29 17:44:01
6680
发布2019-05-29 17:44:01
举报
文章被收录于专栏:luxixingluxixing

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

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

BaseYii 结构图
BaseYii 结构图

先说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框架里,是框架的纲要,在这个类里,实现了类的自动加载机制,实现了组件的创建配置机制

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档