国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

yii2代碼學(xué)習(xí)-BaseYii

chavesgu / 731人閱讀

摘要:框架的版本已經(jīng)發(fā)布,版本最低要求是,將會(huì)在今年早些時(shí)候推出正式版。閱讀的代碼,能學(xué)到很多東西,代碼寫的很優(yōu)雅,用到了很多版本的新特性。

yii框架的v-2.0-alpha版本已經(jīng)發(fā)布,PHP版本最低要求是PHP-5.4,將會(huì)在今年早些時(shí)候推出正式版。閱讀yii2的代碼,能學(xué)到很多東西,代碼寫的很優(yōu)雅,用到了很多php-5.4版本的新特性。

BaseYii這個(gè)類,在yii2框架中被稱作 core help class,在yii2框架中被很多類用到,它的namespace是yii.詳情參照下圖:

先說property:
他們都是靜態(tài)的成員變量

classMap
yii框架自動(dòng)加載機(jī)制使用,是一個(gè)關(guān)聯(lián)數(shù)組,key值為首字母不為的類名(即namespace+classname的類全名),value是關(guān)聯(lián)的類定義文件路徑,這個(gè)路徑也可以是路徑別名(在yii中以@開始)

app
console或者web應(yīng)用的類實(shí)例

aliases
注冊(cè)的別名路徑,初始值
$aliases = ["@yii" => DIR];

objectConfg
yii是組件式框架,objectConfig是使用createObject()創(chuàng)建組件或者類對(duì)象使用的配置,這個(gè)是關(guān)聯(lián)數(shù)組
key值是首字母不為的類名,value值是一個(gè)數(shù)組,使用createObject方法的時(shí)候會(huì)把value值賦給要?jiǎng)?chuàng)建的類的property

BaseYii的成員函數(shù)也都是靜態(tài)方法

getVersion()返回版本信息,powered()返回版權(quán)信息,t是多語言版本翻譯函數(shù),這三個(gè)在實(shí)際開發(fā)中很少會(huì)用到,不再贅述

getAlias()
函數(shù)原型是: getAlias($alias, $throwException = true)
參數(shù)$alias是路徑別名,功能是獲取別名的真實(shí)路徑,如果沒有找到別名的路徑, $throwException為true拋出異常
這個(gè)方法索引靜態(tài)成員變量$aliases查找別名對(duì)應(yīng)的路徑

getRootAlias()
函數(shù)原型: public static function getRootAlias($alias)
返回別名的root部分,舉個(gè)例子,別名@app/controller,就會(huì)返回app

setAlias()
函數(shù)原型:public static function setAlias($alias, $path)
向靜態(tài)成員變量$aliase注冊(cè)一個(gè)別名,$alias是別名名稱,$path是別名路徑
大概講一下設(shè)置別名的流程,明白設(shè)置別名的原理:
首先檢查$alias的值首字母是不是@,如果不是,添加@到值的首位
查找/出現(xiàn)的位置,確定別名$alias的root別名,如果$alias中包含/,則root的值為substr($alias, 0, $pos),否則就是本身
$path如果為空會(huì)釋放已存在的別名
$path不為空,如果存在root別名在靜態(tài)成員變量$aliases中,則把別名放在子別名中,否則就添加新的別名

autoload()
函數(shù)原型:public static function autoload($className)
yii類自動(dòng)加載機(jī)制,從靜態(tài)成員變量$classMap索引$className
實(shí)現(xiàn)的具體邏輯參考源代碼

createObject()
函數(shù)原型:public static function createObject($config)
實(shí)現(xiàn)組件的一個(gè)方法,創(chuàng)建一個(gè)組件(類)的方法,$config如果是一個(gè)字符串,那它必須是組件或者類的名稱,如果是一個(gè)數(shù)組,必須設(shè)置
$config["class"],假設(shè)$config的值是 $config["class"=>"test", ["v1"=>1,"v2"=>2]]
檢查靜態(tài)成員變量$objectConfig是不是設(shè)置過$configConfig["test"],如果有,$configConfig["test"]的合并到config中去
最后會(huì)根據(jù)傳入的參數(shù)個(gè)數(shù)來決定是使用反射或者new來創(chuàng)建組件實(shí)例

configure()
函數(shù)原型:public static function configure($object, $properties)
設(shè)置對(duì)象的屬性

trace ,error,warning,info.beginProfile,endProfile是日志相關(guān)操作,不再詳細(xì)敘述。

BaseYii就是一個(gè)helper類,里面的方法變量貫穿在整個(gè)yii框架里,是框架的綱要,在這個(gè)類里,實(shí)現(xiàn)了類的自動(dòng)加載機(jī)制,實(shí)現(xiàn)了組件的創(chuàng)建配置機(jī)制

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/20678.html

相關(guān)文章

  • CLI模式下Yii2的log問題追蹤

    摘要:繼續(xù)跟蹤前,先看看類的方法組件初始化時(shí),注冊(cè)回調(diào)函數(shù),確保腳本執(zhí)行完畢時(shí)消息被正確打印。將示例函數(shù)的方法改成然后在腳本執(zhí)行過程中,按下,或者通過命令發(fā)送信號(hào),日志都正常輸出,表明中的回調(diào)函數(shù)被正常調(diào)用。 轉(zhuǎn)載請(qǐng)注明出處:https://tlanyan.me/trace-log-... 命令行下運(yùn)行長時(shí)間任務(wù),發(fā)現(xiàn)Yii2的log組件不能正常輸出日志。空閑之余逐步追蹤問題,終于發(fā)現(xiàn)原因...

    ztyzz 評(píng)論0 收藏0
  • Yii2 完整框架分析(詳細(xì))

    摘要:行為是如何注冊(cè)到組件的呢通過注冊(cè)行為之后,實(shí)際上是添加到了的屬性中那么行為中的屬性,就添加到了,中進(jìn)行直接調(diào)用行為里面的方法的時(shí)候,實(shí)際上觸發(fā)了里面的魔術(shù)方法繼承鏈圖解 Yii2 框架Trace 準(zhǔn)備 了解composer的autoload psr0 psr4 加載機(jī)制 了解spl_autoload_register 了解依賴注入的實(shí)現(xiàn)原理反射 了解常用魔術(shù)方法__set,__get...

    spademan 評(píng)論0 收藏0
  • Yii源碼解讀-類自動(dòng)加載

    摘要:實(shí)現(xiàn)的類自動(dòng)加載,依賴于的,注冊(cè)一個(gè)自己的自動(dòng)加載函數(shù),并插入到自動(dòng)加載函數(shù)棧的最前面,確保的會(huì)被最先調(diào)用。首先加載第三方的,再加載的。最后加載的,這樣可以保證的優(yōu)先加載。 實(shí)現(xiàn) Yii的類自動(dòng)加載,依賴于PHP的spl_autoload_register(), 注冊(cè)一個(gè)自己的自動(dòng)加載函數(shù)(autoloader),并插入到自動(dòng)加載函數(shù)棧的最前面,確保Yii的autoloader會(huì)被最先...

    Jeffrrey 評(píng)論0 收藏0
  • YII2快速學(xué)習(xí)筆記

    摘要:高性能始終是的首要目標(biāo)之一。版是上代的老版本,現(xiàn)在處于維護(hù)狀態(tài)。版是一個(gè)完全重寫的版本,采用了最新的技術(shù)和協(xié)議,包括依賴包管理器代碼規(guī)范命名空間特質(zhì)等等。所以,我們學(xué)習(xí)版本。啟用本鏡像服務(wù)系統(tǒng)全局配置即將配置信息添加到的全局配置文件中。 工作中需要用到Y(jié)II框架,于是乎,系統(tǒng)的學(xué)習(xí)下這套框架,詳細(xì)教程請(qǐng)看考該站完整系列:YII2教程 一、YII簡介 1、什么是YII Yii 是一個(gè)高性...

    kbyyd24 評(píng)論0 收藏0
  • Yii2:教你一步步寫一個(gè)微信商城(一)

    摘要:本教程主要基于大神的開源商城,為大家解讀的源碼,由于原版商城更多是針對(duì)國際業(yè)務(wù),因此本教程會(huì)適當(dāng)修改,使其更適合于微信環(huán)境。 本教程主要基于 terry 大神的開源商城 Fecshop,為大家解讀 Fecshop 的源碼,由于原版商城更多是針對(duì)國際業(yè)務(wù),因此本教程會(huì)適當(dāng)修改,使其更適合于微信環(huán)境。由于商城源碼復(fù)雜,本教程將長期更新。本人也是邊學(xué)習(xí)邊寫這份教程,過程中難免會(huì)出現(xiàn)錯(cuò)誤,還請(qǐng)...

    Invoker 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<