成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Yii源碼解讀-屬性

instein / 3148人閱讀

摘要:成員變量可以視為一個(gè)可讀可寫沒有任何預(yù)處理或后處理的屬性。而成員變量由于外部不可見,與屬性外的特性不相符,所以不能視為屬性。在一些表示數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)集合等簡單情況下,且不需讀寫控制等,可以考慮使用成員變量作為屬性,這樣可以提高一點(diǎn)效率。

Yii基礎(chǔ) 屬性 property

屬性用于表征類的狀態(tài),從訪問的形式上看,屬性與成員變量沒有區(qū)別。但是,成員變量是就類的結(jié)構(gòu)構(gòu)成而言的概念,而屬性是就類的功能邏輯而言的概念

Q: 屬性和成員變量有什么區(qū)別嗎?

成員變量是一個(gè)“內(nèi)”概念,反映的是類的結(jié)構(gòu)構(gòu)成。屬性是一個(gè)“外”概念,反映的是類的邏輯意義。

成員變量沒有讀寫權(quán)限控制,而屬性可以指定為只讀或只寫,或可讀可寫。

成員變量不對讀出作任何后處理,不對寫入作任何預(yù)處理,而屬性則可以。

public成員變量可以視為一個(gè)可讀可寫、沒有任何預(yù)處理或后處理的屬性。 而private成員變量由于外部不可見,與屬性“外”的特性不相符,所以不能視為屬性。

雖然大多數(shù)情況下,屬性會由某個(gè)或某些成員變量來表示,但屬性與成員變量沒有必然的對應(yīng)關(guān)系, 比如與非門的 output 屬性,就沒有一個(gè)所謂的 $output 成員變量與之對應(yīng)。

yiiaseObject 提供了對屬性的支持

屬性的實(shí)現(xiàn)
class foo extends yiiaseobject{
    private $_title;
    
    public function setTitle($title){
        $this->_title = trim($title);
    }
    
    public function getTitle(){
        return $this->_title;
    }
}

屬性能夠?qū)︻悓?shí)現(xiàn)更好的封裝,同時(shí)構(gòu)件入口,對成員變量統(tǒng)一管理。

然而__get(), __set()遍歷所有成員變量,找不到匹配的成員變量時(shí)才被調(diào)用。其效率天生地低于使用成員變量的形式。在一些表示數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)集合等簡單情況下,且不需讀寫控制等, 可以考慮使用成員變量作為屬性,這樣可以提高一點(diǎn)效率。

自動調(diào)用 __get() __set() 的時(shí)機(jī)僅僅發(fā)生在訪問不存在的成員變量時(shí)。 因此,如果定義了成員變量 public $title 那么,就算定義了 getTitle() setTitle() , 他們也不會被調(diào)用。因?yàn)?$post->title 時(shí),會直接指向該 public $title。

PHP對于類方法不區(qū)分大小寫,即大小寫不敏感,對屬性名也是不區(qū)分大小寫的。

__get() __set() 都是public的,static的方法統(tǒng)統(tǒng)不好使。

Component

Yii自稱是基于組建的框架。

yiiaseComponent繼承自yiiaseObject,Component重載了Object中的屬性方法,同時(shí)也加入了事件和行為。

由于重載加入了事件和行為,Component的性能會筆Object差一點(diǎn)。

Object的配置

Yii的對象配置方法是統(tǒng)一的。所有對象的配置都是通過Object中的__construct()來配置。配置的本質(zhì)就在Yii::configure()中,他通過配置數(shù)組,構(gòu)建屬性。

Q: 如果配置是多維的數(shù)組怎么辦呢?

Yii在yiidiServiceLocator中實(shí)現(xiàn)了對這一數(shù)組的具體處理: setComponents。

Summary

通過yiiaseObject::__construct(),我們可以看到,所有對象,包括Component的屬性的加載,均有4個(gè)階段,(前三個(gè)階段是一氣呵成在一起的)。

預(yù)初始化:默認(rèn)定義Property

Yii::configure()來加載配置數(shù)組,覆蓋Property

后初始化:init()的執(zhí)行

類方法調(diào)用階段。

參考

http://www.digpage.com/

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/21438.html

相關(guān)文章

  • Yii源碼解讀-行為

    摘要:行為所要響應(yīng)的事件重載方法,表示這個(gè)行為將對類何種事件進(jìn)行何種反饋。行為用的最多的,也是對于各種事件的響應(yīng)。當(dāng)出現(xiàn)命名沖突時(shí),行為會自行排除沖突,自動使用先綁定的行為。目前還沒有能支持行為。 Yii基礎(chǔ) 行為(Behavior) 行為(behavior)可以在不修改現(xiàn)有類的情況下,對類的功能進(jìn)行擴(kuò)充。 通過將行為綁定到一個(gè)類,可以使類具有行為本身所定義的屬性和方法,就好像類本來就有這些...

    IntMain 評論0 收藏0
  • Yii源碼解讀-環(huán)境&配置

    摘要:環(huán)境需要了解一下一個(gè)純粹的與本地環(huán)境密切相關(guān)的配置項(xiàng)。對于配置項(xiàng)以數(shù)組進(jìn)行組織。數(shù)組元素表示將要?jiǎng)?chuàng)建的對象的完整類名。數(shù)組元素表示指定為屬性的初始值為。數(shù)組元素表示將綁定到對象的事件中。對于形式配置項(xiàng),視配置值為一個(gè)事件,綁定到上。 環(huán)境 需要了解一下cookieValidationKey:一個(gè)純粹的、與本地環(huán)境密切相關(guān)的配置項(xiàng)。 但是,在有些情況下,cookieValidationK...

    cgh1999520 評論0 收藏0
  • Yii源碼解讀-服務(wù)定位器(Service Locator)

    摘要:的目的也是解耦,并且非常適合基于服務(wù)和組件的應(yīng)用。一個(gè)類可以在運(yùn)行時(shí),有針對性地增減替換所要用到的服務(wù),從而得到一定程度的優(yōu)化。這兩個(gè)數(shù)組均是以服務(wù)或組件的為鍵的數(shù)組。用于保存這些組件或服務(wù)的定義。這個(gè)定義可以是配置數(shù)組對象類名參考 SL的目的也是解耦,并且非常適合基于服務(wù)和組件的應(yīng)用。 Service Locator充當(dāng)了一個(gè)運(yùn)行時(shí)的鏈接器的角色,可以在運(yùn)行時(shí)動態(tài)地修改一個(gè)類所要選...

    moven_j 評論0 收藏0
  • Yii源碼解讀-依賴注入(容器)

    摘要:在中使用解耦,有兩種注入方式構(gòu)造函數(shù)注入屬性注入。對象的實(shí)例化解析依賴信息該方法實(shí)質(zhì)上就是通過的反射機(jī)制,通過類的構(gòu)造函數(shù)的參數(shù)分析他所依賴的單元。 有關(guān)概念 依賴倒置原則(Dependence Inversion Principle, DIP) 傳統(tǒng)軟件設(shè)計(jì)中,上層代碼依賴于下層代碼,當(dāng)下層出現(xiàn)變動時(shí),上層也要相應(yīng)變化。 DIP的核心思想是:上層定義接口,下層實(shí)現(xiàn)這個(gè)接口,從而使的下...

    Prasanta 評論0 收藏0
  • Yii源碼解讀 - 事件

    摘要:事件的綁定和解除對事件進(jìn)行綁定和解綁。使用全局函數(shù)作為來進(jìn)行綁定使用對象的成員函數(shù)來進(jìn)行綁定使用類的靜態(tài)成員函數(shù)進(jìn)行綁定使用匿名函數(shù)上面的數(shù)組是用來維護(hù)事件數(shù)組。事件的級別類級別事件類級別事件用于響應(yīng)所有類實(shí)例的事件。 Yii基礎(chǔ) 事件 event 使用事件,可以在特定的時(shí)點(diǎn),觸發(fā)執(zhí)行預(yù)先設(shè)定的一段代碼,事件既是代碼解耦的一種方式,也是設(shè)計(jì)業(yè)務(wù)流程的一種模式。 事件的相關(guān)要素 這是一...

    AaronYuan 評論0 收藏0

發(fā)表評論

0條評論

instein

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<