yii2代碼學習-BaseYii

yii框架的v-2.0-alpha版本已經發布,PHP版本最低要求是PHP-5.4,將會在今年早些時候推出正式版。閱讀yii2的代碼,能學到不少東西,代碼寫的很優雅,用到了不少php-5.4版本的新特性。php

BaseYii這個類,在yii2框架中被稱做 core help class,在yii2框架中被不少類用到,它的namespace是yii.詳情參照下圖:
BaseYii 結構圖web

先說property:
他們都是靜態的成員變量segmentfault

  • classMap
    yii框架自動加載機制使用,是一個關聯數組,key值爲首字母不爲\的類名(即namespace+classname的類全名),value是關聯的類定義文件路徑,這個路徑也能夠是路徑別名(在yii中以@開始)
  • app
    console或者web應用的類實例數組

  • aliases
    註冊的別名路徑,初始值
    $aliases = ['@yii' => DIR];yii2

  • objectConfg
    yii是組件式框架,objectConfig是使用createObject()建立組件或者類對象使用的配置,這個是關聯數組
    key值是首字母不爲\的類名,value值是一個數組,使用createObject方法的時候會把value值賦給要建立的類的propertyapp

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

相關文章
相關標籤/搜索