摘要:首先闡明結(jié)論,在中指向定義了當(dāng)前被調(diào)用方法的類,指向調(diào)用當(dāng)前靜態(tài)方法的類。下面的例子更好的說明了和之間的差異后者使用了的后期靜態(tài)綁定指向調(diào)用方法的當(dāng)前類
首先闡明結(jié)論,在PHP中 self指向定義了當(dāng)前被調(diào)用方法的類, static指向調(diào)用當(dāng)前靜態(tài)方法的類。
接下來通過一個(gè)例子來證明上面的結(jié)果
class A { public static $_a = "Class A"; public static function echoProperty() { echo self::$_a . PHP_EOL; } } class B extends A { public static $_a = "Class B"; } $obj = new B(); B::echoProperty();//輸出 Class A
之所以會(huì)這樣是因?yàn)槭褂胹elf:: 或者_(dá)_CLASS__對(duì)當(dāng)前類的靜態(tài)引用,取決于定義被調(diào)用方法所在的類,將上面Class A的方法echoProperty做一下修改變成:
class A { public static $_a = "Class A"; public static function echoProperty() { echo static::$_a . PHP_EOL; } } //再次調(diào)用B::echoProperty將輸出 "CLASS B"
為了避免上面第一個(gè)例子中看到的子類重寫父類的靜態(tài)屬性后,使用繼承來的方法仍然訪問父類的靜態(tài)屬性, PHP5.3增加了一個(gè)新的語法:后期靜態(tài)綁定(Late static binding), 使用static關(guān)鍵字替代self關(guān)鍵字,使得static指向與get_called_class()返回的相同的類,即當(dāng)前調(diào)用靜態(tài)方法的類, 該關(guān)鍵字對(duì)于靜態(tài)方法的訪問同樣有效。
下面的例子更好的說明了new self()和new static()之間的差異(后者使用了PHP的后期靜態(tài)綁定指向調(diào)用方法的當(dāng)前類)
class A { public static function get_self() { return new self(); } public static function get_static() { return new static(); } } class B extends A {} echo get_class(B::get_self()); // A echo get_class(B::get_static()); // B echo get_class(A::get_self()); // A echo get_class(A::get_static()); // A
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22039.html
摘要:在的面向?qū)ο缶幊讨?,總?huì)遇到可你知道和的區(qū)別么其實(shí)區(qū)別很簡(jiǎn)單,只需要寫幾個(gè)就能懂得到輸出可以發(fā)現(xiàn),在子類中還是會(huì)調(diào)用父類的方法得到輸出可以看到,在調(diào)用,子類哪怕調(diào)用的是父類的方法,但是父類方法中調(diào)用的方法還會(huì)是子類的方法好繞嘴。。 在php的面向?qū)ο缶幊讨?,總?huì)遇到 class test{ public static function test(){ self::func(...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:設(shè)計(jì)模式理解設(shè)計(jì)模式是面向?qū)ο缶幊痰慕?jīng)驗(yàn)總結(jié)和最佳實(shí)踐解決某一類特定問題。設(shè)計(jì)模式分類創(chuàng)建型單例模式工廠模式簡(jiǎn)單工廠抽象工廠構(gòu)建者模式原型模式結(jié)構(gòu)型行為型觀察者模式責(zé)任鏈模式單例模式單例模式一般使用在資源共享和需要控制資源的情況下。 面向?qū)ο笈c面向過程的區(qū)別 做事情的思考方式不同面向?qū)ο?---分析再拆出對(duì)象面向過程----分析再拆出步驟 聯(lián)系面向?qū)ο蠛兔嫦蜻^程都是一種編程思維,面向...
閱讀 3691·2021-09-22 15:28
閱讀 1305·2021-09-03 10:35
閱讀 888·2021-09-02 15:21
閱讀 3491·2019-08-30 15:53
閱讀 3504·2019-08-29 17:25
閱讀 580·2019-08-29 13:22
閱讀 1567·2019-08-28 18:15
閱讀 2298·2019-08-26 13:57