PHP的new static和new self的區(qū)別與使用
下面我們舉個栗子:
class Father { public static function getSelf() { return new self(); } public static function getStatic() { return new static(); } } class Son extends Father {} echo get_class(Son::getSelf()); // Father echo get_class(Son::getStatic()); // Son echo get_class(Father::getSelf()); // Father echo get_class(Father::getStatic()); // Father
new self
這里面注意這一行 get_class(Son::getStatic()); 返回的是 Son 這個 class, 可以總結(jié)如下:
self 返回的是 new self 中關(guān)鍵字 new 所在的類中,比如這里例子的 :
public static function getSelf() { return new self(); // new 關(guān)鍵字在 Father 這里 }
始終返回 Father。
new static
static 則上面的基礎(chǔ)上,更聰明一點點:static 會返回執(zhí)行 new static() 的類,比如 Son 執(zhí)行 get_class(Son::getStatic()) 返回的是 Son, Father 執(zhí)行 get_class(Father::getStatic()) 返回的是 Father
而在沒有繼承的情況下,可以認為 new self 和 new static 是返回相同的結(jié)果。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
yii使用activeFileField控件實現(xiàn)上傳文件與圖片的方法
這篇文章主要介紹了yii使用activeFileField控件實現(xiàn)上傳文件與圖片的方法,較為詳細的分析了activeFileField控件用于文件傳輸?shù)木唧w使用技巧,需要的朋友可以參考下2015-12-12CI框架學(xué)習(xí)筆記(一) - 環(huán)境安裝、基本術(shù)語和框架流程
本文是CI框架學(xué)習(xí)筆記的第一篇,主要介紹了CI框架的環(huán)境安裝,基本術(shù)語以及框架流程,非常的詳細,有需要的朋友可以參考下2014-10-10centos 7系統(tǒng)下安裝laravel運行環(huán)境的步驟詳解
Laravel框架對于開發(fā)網(wǎng)頁應(yīng)用來說是一個絕好的的工具,最近正好又在學(xué)習(xí)linux系統(tǒng),所以下面這篇文章主要給大家介紹了在centos 7系統(tǒng)下安裝laravel運行環(huán)境的步驟,需要的朋友可以參考借鑒,下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08推薦幾款用 Sublime Text 開發(fā) Laravel 所用到的插件
Sublime Text2 是一款具有代碼高亮、語法提示、自動完成且反應(yīng)快速的編輯器軟件,不僅具有華麗的界面,還支持插件擴展機制,用她來寫代碼,絕對是一種享受。所以本人也是用她來做Laravel開發(fā)的,這里給大家推薦幾款她的插件2014-10-10ThinkPHP5聯(lián)合(關(guān)聯(lián))查詢、多條件查詢與聚合查詢實例詳解
這篇文章主要介紹了ThinkPHP5聯(lián)合(關(guān)聯(lián))查詢、多條件查詢與聚合查詢,結(jié)合實例形式總結(jié)分析了thinkPHP5常用查詢操作技巧,需要的朋友可以參考下2017-11-11