麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > PHP > 正文

簡單談談php延遲靜態(tài)綁定

2024-05-04 23:42:34
字體:
來源:轉載
供稿:網友
php5.3是php5的一個里程碑,加入了大量新特性。本文主要給大家介紹了php5.3的一個新功能--延遲靜態(tài)綁定,希望能夠對大家有所幫助。
 

使用場景

先來觀察以下代碼:

abstract class base {  //do sth}class aClass extends base{  public static function create(){    return new aClass();  } }class bClass extends base{  public static function create(){    return new bClass();  }}var_dump(aClass::create());var_dump(bClass::create());

輸出:

object(aClass)#1 (0) { } object(bClass)#1 (0) { }

以上aClass和bClass繼承于base這個抽象類,但是在兩個子類中同時實現(xiàn)了create()這個靜態(tài)方法。遵從oop思想,這種重復代碼應該放在base這個父類中實現(xiàn)。

改進代碼

abstract class base {  public static function create(){    return new self();  } }class aClass extends base{}class bClass extends base{}var_dump(aClass::create());var_dump(bClass::create());

現(xiàn)在的代碼看起來好像已經符合我們之前的想法,將create()方法放在父類里共用了,那我們來運行下看會發(fā)生什么。

Cannot instantiate abstract class base in ...

很遺憾,代碼好像并沒有按照我們預想的那樣去運行,父類中的self()被解析為base這個父類,并非繼承與他的子類。于是為了解決這個問題,php5.3中引入了延遲靜態(tài)綁定這個概念。

延遲靜態(tài)綁定

abstract class base {  public static function create(){    return new static();  } }class aClass extends base{}class bClass extends base{}var_dump(aClass::create());var_dump(bClass::create());

這個代碼與之前的幾乎一致,不同點在于將self換成了static這個關鍵字,static會解析為子類,而非父類,這樣就可以解決上面遇到的問題,這就是php的延遲靜態(tài)綁定。

最后,運行一下代碼,得到了最終想要的結果。

object(aClass)#1 (0) { } object(bClass)#1 (0) { }


注:相關教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美激情性色生活片在线观看 | 色呦呦一区二区三区 | 青草av.久久免费一区 | 久久久经典视频 | 欧美xxxxx视频 | 国产精品亚洲综合 | 欧美在线观看视频一区 | 欧美一级成人一区二区三区 | 一级做受毛片免费大片 | 黄色一级片在线免费观看 | av在线不卡免费 | 成人在线视频免费 | 中文字幕在线观看国产 | 深夜影院一级毛片 | 55夜色66夜色国产精品视频 | 精品国产1区2区3区 免费国产 | 黄色免费大片 | 欧美黄色大片免费观看 | av成人在线电影 | 黑人一区二区 | 手机国产乱子伦精品视频 | 国产成人网 | 久久亚洲春色中文字幕久久 | 91色综合综合热五月激情 | 免费a级毛片永久免费 | 国产精品美女久久久免费 | japanesexxxxxxxhd| xnxx 日本19| h色网站在线观看 | 九九精品影院 | 一级做a爰片性色毛片2021 | 久久国产精品影视 | 久久艹精品视频 | 免费久久久久久久 | 精品小视频 | 久久亚洲国产精品 | 天天看成人免费毛片视频 | 国产毛片在线 | 日韩美香港a一级毛片免费 欧美一级淫片007 | 国产成人av一区 | 精品黑人一区二区三区国语馆 |