国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

PHP面向?qū)ο笾衝ew self()與 new static()的區(qū)別淺析

2024-05-04 23:59:32
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

本文主要跟大家介紹了關(guān)于PHP面向?qū)ο笾衝ew self()與 new static()的區(qū)別,這兩個(gè)方法new出來(lái)的對(duì)象有什么區(qū)別呢,說(shuō)白了就是new出來(lái)的到底是同一個(gè)類實(shí)例還是不同的類實(shí)例呢?下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

區(qū)別如下:

首先闡明結(jié)論,在PHP中 self指向定義了當(dāng)前被調(diào)用方法的類, static指向調(diào)用當(dāng)前靜態(tài)方法的類。

接下來(lái)通過(guò)一個(gè)例子來(lái)證明上面的結(jié)果

php/254821.html">php;">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è)例子中看到的子類重寫(xiě)父類的靜態(tài)屬性后,使用繼承來(lái)的方法仍然訪問(wèn)父類的靜態(tài)屬性, PHP5.3增加了一個(gè)新的語(yǔ)法:后期靜態(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)方法的訪問(wèn)同樣有效。

下面的例子更好的說(shuō)明了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()); // Aecho get_class(B::get_static()); // Becho get_class(A::get_self()); // Aecho get_class(A::get_static()); // A

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 合阳县| 乐都县| 偏关县| 都安| 阿瓦提县| 宁强县| 武川县| 乐昌市| 清水河县| 孝义市| 浙江省| 明光市| 洛阳市| 潢川县| 荣成市| 湖口县| 昭通市| 丹东市| 建昌县| 洪雅县| 常宁市| 武城县| 体育| 金堂县| 沅陵县| 义乌市| 和平区| 城步| 临武县| 河间市| 梅州市| 陆良县| 岫岩| 揭西县| 海口市| 河东区| 长泰县| 邹平县| 兴海县| 陕西省| 荆州市|