yii框架的v-2.0-alpha版本已經發布,PHP版本最低要求是PHP-5.4,將會在今年早些時候推出正式版。閱讀yii2的代碼,能學到不少東西,代碼寫的很優雅,用到了不少php-5.4版本的新特性。php
BaseYii這個類,在yii2框架中被稱做 core help class,在yii2框架中被不少類用到,它的namespace是yii.詳情參照下圖:
web
先說property:
他們都是靜態的成員變量segmentfault
BaseYii的成員函數也都是靜態方法框架
getVersion()返回版本信息,powered()返回版權信息,t是多語言版本翻譯函數,這三個在實際開發中不多會用到,再也不贅述yii
- 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框架裏,是框架的綱要,在這個類裏,實現了類的自動加載機制,實現了組件的建立配置機制spa