摘要:框架的版本已經(jīng)發(fā)布,版本最低要求是,將會在今年早些時候推出正式版。閱讀的代碼,能學(xué)到很多東西,代碼寫的很優(yōu)雅,用到了很多版本的新特性。
yii框架的v-2.0-alpha版本已經(jīng)發(fā)布,PHP版本最低要求是PHP-5.4,將會在今年早些時候推出正式版。閱讀yii2的代碼,能學(xué)到很多東西,代碼寫的很優(yōu)雅,用到了很多php-5.4版本的新特性。
BaseYii這個類,在yii2框架中被稱作 core help class,在yii2框架中被很多類用到,它的namespace是yii.詳情參照下圖:
先說property:
他們都是靜態(tài)的成員變量
classMap
yii框架自動加載機制使用,是一個關(guān)聯(lián)數(shù)組,key值為首字母不為的類名(即namespace+classname的類全名),value是關(guān)聯(lián)的類定義文件路徑,這個路徑也可以是路徑別名(在yii中以@開始)
app
console或者web應(yīng)用的類實例
aliases
注冊的別名路徑,初始值
$aliases = ["@yii" => DIR];
objectConfg
yii是組件式框架,objectConfig是使用createObject()創(chuàng)建組件或者類對象使用的配置,這個是關(guān)聯(lián)數(shù)組
key值是首字母不為的類名,value值是一個數(shù)組,使用createObject方法的時候會把value值賦給要創(chuàng)建的類的property
BaseYii的成員函數(shù)也都是靜態(tài)方法
getVersion()返回版本信息,powered()返回版權(quán)信息,t是多語言版本翻譯函數(shù),這三個在實際開發(fā)中很少會用到,不再贅述
getAlias()
函數(shù)原型是: getAlias($alias, $throwException = true)
參數(shù)$alias是路徑別名,功能是獲取別名的真實路徑,如果沒有找到別名的路徑, $throwException為true拋出異常
這個方法索引靜態(tài)成員變量$aliases查找別名對應(yīng)的路徑
getRootAlias()
函數(shù)原型: public static function getRootAlias($alias)
返回別名的root部分,舉個例子,別名@app/controller,就會返回app
setAlias()
函數(shù)原型:public static function setAlias($alias, $path)
向靜態(tài)成員變量$aliase注冊一個別名,$alias是別名名稱,$path是別名路徑
大概講一下設(shè)置別名的流程,明白設(shè)置別名的原理:
首先檢查$alias的值首字母是不是@,如果不是,添加@到值的首位
查找/出現(xiàn)的位置,確定別名$alias的root別名,如果$alias中包含/,則root的值為substr($alias, 0, $pos),否則就是本身
$path如果為空會釋放已存在的別名
$path不為空,如果存在root別名在靜態(tài)成員變量$aliases中,則把別名放在子別名中,否則就添加新的別名
autoload()
函數(shù)原型:public static function autoload($className)
yii類自動加載機制,從靜態(tài)成員變量$classMap索引$className
實現(xiàn)的具體邏輯參考源代碼
createObject()
函數(shù)原型:public static function createObject($config)
實現(xiàn)組件的一個方法,創(chuàng)建一個組件(類)的方法,$config如果是一個字符串,那它必須是組件或者類的名稱,如果是一個數(shù)組,必須設(shè)置
$config["class"],假設(shè)$config的值是 $config["class"=>"test", ["v1"=>1,"v2"=>2]]
檢查靜態(tài)成員變量$objectConfig是不是設(shè)置過$configConfig["test"],如果有,$configConfig["test"]的合并到config中去
最后會根據(jù)傳入的參數(shù)個數(shù)來決定是使用反射或者new來創(chuàng)建組件實例
configure()
函數(shù)原型:public static function configure($object, $properties)
設(shè)置對象的屬性
trace ,error,warning,info.beginProfile,endProfile是日志相關(guān)操作,不再詳細敘述。
BaseYii就是一個helper類,里面的方法變量貫穿在整個yii框架里,是框架的綱要,在這個類里,實現(xiàn)了類的自動加載機制,實現(xiàn)了組件的創(chuàng)建配置機制
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/20678.html
摘要:繼續(xù)跟蹤前,先看看類的方法組件初始化時,注冊回調(diào)函數(shù),確保腳本執(zhí)行完畢時消息被正確打印。將示例函數(shù)的方法改成然后在腳本執(zhí)行過程中,按下,或者通過命令發(fā)送信號,日志都正常輸出,表明中的回調(diào)函數(shù)被正常調(diào)用。 轉(zhuǎn)載請注明出處:https://tlanyan.me/trace-log-... 命令行下運行長時間任務(wù),發(fā)現(xiàn)Yii2的log組件不能正常輸出日志??臻e之余逐步追蹤問題,終于發(fā)現(xiàn)原因...
摘要:行為是如何注冊到組件的呢通過注冊行為之后,實際上是添加到了的屬性中那么行為中的屬性,就添加到了,中進行直接調(diào)用行為里面的方法的時候,實際上觸發(fā)了里面的魔術(shù)方法繼承鏈圖解 Yii2 框架Trace 準(zhǔn)備 了解composer的autoload psr0 psr4 加載機制 了解spl_autoload_register 了解依賴注入的實現(xiàn)原理反射 了解常用魔術(shù)方法__set,__get...
摘要:實現(xiàn)的類自動加載,依賴于的,注冊一個自己的自動加載函數(shù),并插入到自動加載函數(shù)棧的最前面,確保的會被最先調(diào)用。首先加載第三方的,再加載的。最后加載的,這樣可以保證的優(yōu)先加載。 實現(xiàn) Yii的類自動加載,依賴于PHP的spl_autoload_register(), 注冊一個自己的自動加載函數(shù)(autoloader),并插入到自動加載函數(shù)棧的最前面,確保Yii的autoloader會被最先...
摘要:高性能始終是的首要目標(biāo)之一。版是上代的老版本,現(xiàn)在處于維護狀態(tài)。版是一個完全重寫的版本,采用了最新的技術(shù)和協(xié)議,包括依賴包管理器代碼規(guī)范命名空間特質(zhì)等等。所以,我們學(xué)習(xí)版本。啟用本鏡像服務(wù)系統(tǒng)全局配置即將配置信息添加到的全局配置文件中。 工作中需要用到Y(jié)II框架,于是乎,系統(tǒng)的學(xué)習(xí)下這套框架,詳細教程請看考該站完整系列:YII2教程 一、YII簡介 1、什么是YII Yii 是一個高性...
摘要:本教程主要基于大神的開源商城,為大家解讀的源碼,由于原版商城更多是針對國際業(yè)務(wù),因此本教程會適當(dāng)修改,使其更適合于微信環(huán)境。 本教程主要基于 terry 大神的開源商城 Fecshop,為大家解讀 Fecshop 的源碼,由于原版商城更多是針對國際業(yè)務(wù),因此本教程會適當(dāng)修改,使其更適合于微信環(huán)境。由于商城源碼復(fù)雜,本教程將長期更新。本人也是邊學(xué)習(xí)邊寫這份教程,過程中難免會出現(xiàn)錯誤,還請...
閱讀 721·2021-11-22 13:54
閱讀 3084·2021-09-26 10:16
閱讀 3519·2021-09-08 09:35
閱讀 1593·2019-08-30 15:55
閱讀 3440·2019-08-30 15:54
閱讀 2086·2019-08-30 10:57
閱讀 506·2019-08-29 16:25
閱讀 885·2019-08-29 16:15