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