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

資訊專欄INFORMATION COLUMN

【modernPHP專題(6)】類的延遲綁定(后期綁定)

adam1q84 / 2486人閱讀

摘要:實例化對象里面的所在哪個類就返回哪個類。訪問的是當(dāng)前類有點像因為其是繼承了的方法,而調(diào)用的。由此可見,他們的區(qū)別只有在繼承中才能體現(xiàn)出來,如果沒有任何繼承,那么這兩者是沒有區(qū)別的。但如果是在靜態(tài)方法內(nèi)本類的話,最好還是用

以static::來調(diào)用,是在運(yùn)行的那個時刻才執(zhí)行綁定操作;

父類中有個方法是延遲綁定的,在子類::調(diào)用這個方法的時候它又回到調(diào)用的子類開始向上找;

example1:

class Human {
    public static function whoami() {
        echo "來自父類的whoami在執(zhí)行";
    }
    public static function say() {
        self::whoami(); // 子類內(nèi)沒有say方法,找到了父類這里
        // 在這里的self 指的是 父類
    }
    public static function say2() {
        static::whoami();    //  子類也沒有say2方法,又找到父類這里
        // 但是父類用static::whoami,
        // 指調(diào)用你子類自己的whoami方法
    }
}

class Stu extends Human{
    public static function whoami () {
        echo "來自子類的whoami在執(zhí)行";
    }
}

// 來自父類的whoami在執(zhí)行
Stu::say();//調(diào)用Stu類的say方法,但Stu類沒有say方法,就向其父類尋找,找到父類以后,發(fā)現(xiàn)父類的say方法里面又調(diào)用self::whoami();此時self里面其實是有兩個whoami的方法,但由于本次調(diào)用發(fā)生的環(huán)境是在父類的say方法里面,所以它調(diào)用的是父類的whoami方法,不調(diào)用子類的whoami方法;

echo PHP_EOL;

// 來自子類的whoami在執(zhí)行
Stu::say2(); //調(diào)用Stu類的say2方法,但Stu類沒有say2方法,就向其父類尋找,找到父類say2以后,發(fā)現(xiàn)父類的say2方法里面用了static延遲綁定了whoami方法,而此時發(fā)生調(diào)用的子類里面有whoami方法(如果沒有就向父類尋找),所以在此時是綁定在子類的whoami上,所以這里調(diào)用的是子類的whoami方法;

example2:

class Animal { 
    const age = 1; 
    public static $leg = 4; 
    public static function cry() { 
        echo "嗚嗚
"; } public static function t1() { self::cry(); echo self::age,"
"; echo self::$leg,"
"; } public static function t2() { static::cry(); echo static::age,"
"; echo static::$leg,"
"; } } class Human extends Animal { public static $leg = 2; public static function cry() { echo "哇哇
"; } } class Stu extends Human { const age = 16; public static function cry() { echo "嚶嚶
"; } } Stu::t1(); //嗚嗚,1,4 /* ↑↑:一直找到Animal類,Animal類的t1方法是普通綁定,所以是嗚嗚,1,4 */ Stu::t2(); // 嚶嚶,16,2 /* ↑↑:一直找到Animal類,Animal類的t2方法是延遲綁定,又回到Stu類開始找,Stu類有cry方法,所以是嚶嚶,有age屬性所以是16,沒有l(wèi)eg屬性,然后向上找,一直找到既可,所以是2 */
new static()與new self()

self - 就是這個類,是代碼段里面的這個類。new self就是實例化本類;

static - PHP 5.3加進(jìn)來的只得是當(dāng)前這個類,有點像$this的意思,從堆內(nèi)存中提取出來,訪問的是當(dāng)前實例化的那個類,那么 static 代表的就是那個類。


由此可見,他們的區(qū)別只有在繼承中才能體現(xiàn)出來,如果沒有任何繼承,那么這兩者是沒有區(qū)別的。但如果是在靜態(tài)方法內(nèi)new本類的話,最好還是用new static();

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

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

相關(guān)文章

  • modernPHP專題(3)】依賴注入與服務(wù)容器

    摘要:而依賴倒置原則的思想是,上層不應(yīng)該依賴下層,應(yīng)依賴接口。上面通過構(gòu)造函數(shù)注入對象的方式,就是最簡單的依賴注入當(dāng)然注入不僅可以通過構(gòu)造函數(shù)注入,也可以通過屬性注入,上面你可以通過一個來動態(tài)為這個屬性賦值。 依賴倒置和控制反轉(zhuǎn)是一種編程思想,而依賴注入就是通過服務(wù)容器實現(xiàn)這種面向接口或者是面向抽象編程的思想 概念理解 依賴倒置原則 依賴倒置是一種軟件設(shè)計思想,在傳統(tǒng)軟件中,上層代碼依賴于下...

    terro 評論0 收藏0
  • modernPHP專題(8)】匿名函數(shù)和閉包

    摘要:匿名函數(shù)輸出可以直接將匿名函數(shù)進(jìn)行傳遞。報錯,找不到變量之所以稱為副本,是因為通過閉包傳值到匿名函數(shù)內(nèi)的變量值也是不能改變。該方法使用了一個作為回調(diào)函數(shù)。 匿名函數(shù) // Example1 $func = function( $param ) { echo $param; }; $func( some string );//輸出:some string // Example2...

    junnplus 評論0 收藏0
  • modernPHP專題(9)】匿名類

    摘要:復(fù)制當(dāng)前閉包對象,綁定指定的對象和類作用域。類作用域,可以是對象,也可以是實例名稱什么是匿名類先理解以下三個例子例閉包函數(shù)都是繼承類返回匿名函數(shù)返回匿名函數(shù),也就是閉包函數(shù),所有閉包函數(shù)都是繼承類輸出例將一個匿名函數(shù)綁定到一個類中。 類結(jié)構(gòu) Closure { /* 方法 */ // 用于禁止實例化的構(gòu)造函數(shù) __construct ( void ) ...

    ninefive 評論0 收藏0
  • modernPHP專題(7)】生成器語法

    摘要:通過生成器來生成關(guān)聯(lián)數(shù)組下面每一行是用分號分割的字段組合,第一個字段將被用作鍵名。正常來說,產(chǎn)生的是一個,它的成員變量與函數(shù)不存在別名引用關(guān)系。關(guān)鍵字在的版本,生成器允許從其他生成器,可迭代對象或數(shù)組通過關(guān)鍵字來生成對應(yīng)的值輸出 一般你在迭代一組數(shù)據(jù)的時候,需要創(chuàng)建一個數(shù)據(jù),假設(shè)數(shù)組很大,則會消耗很大性能,甚至造成內(nèi)存不足。 //Fatal error: Allowed memory ...

    jackwang 評論0 收藏0
  • modernPHP專題(4)】抽象類與接口

    摘要:抽象類支持抽象類和抽象方法。接口是一種特殊的抽象類,這種抽象類中只包含抽象方法和靜態(tài)常量。對抽象類的使用是通過關(guān)鍵字。抽象類中可以聲明各種類型成員變量,實現(xiàn)數(shù)據(jù)的封裝。一個類可以同時實現(xiàn)多個接口,但一個類只能繼承于一個抽象類。 抽象類 php5支持抽象類和抽象方法。類前加 abstract, 此類就成為抽象類,無法被實例化,此類天生就是用來被繼承的,給子類提供了一個類的模板;類方法前加...

    Keven 評論0 收藏0

發(fā)表評論

0條評論

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