摘要:則上面的基礎上,更聰明一點點會返回執(zhí)行的類,比如執(zhí)行返回的是執(zhí)行返回的是而在沒有繼承的情況下,可以認為和是返回相同的結果。
最近在一個視頻的評論被問到一個小問題:這里選擇用static 而不是self有特殊的考慮么?或者我們可以這樣轉換一下問題:
PHP 的 new static 和 new self 具體有什么?
視頻地址 https://www.codecasts.com/ser...
其實這個來看一個例子應該就很清晰了:
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
這里面注意這一行 get_class(Son::getStatic()); 返回的是 Son 這個 class,可以總結如下:
new self1.self 返回的是 new self 中關鍵字 new 所在的類中,比如這里例子的 :
public static function getSelf() { return new self(); // new 關鍵字在 Father 這里 }
始終返回 Father。
new static2.static 則上面的基礎上,更聰明一點點:static 會返回執(zhí)行 new static() 的類,比如 Son 執(zhí)行 get_class(Son::getStatic()) 返回的是 Son, Father 執(zhí)行 get_class(Father::getStatic()) 返回的是 Father
而在沒有繼承的情況下,可以認為 new self 和 new static是返回相同的結果。
Tips: 可以用一個好的 IDE 來直接看注釋。比如 PhpStorm:
Happy Hacking
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22389.html
摘要:首先闡明結論,在中指向定義了當前被調(diào)用方法的類,指向調(diào)用當前靜態(tài)方法的類。下面的例子更好的說明了和之間的差異后者使用了的后期靜態(tài)綁定指向調(diào)用方法的當前類 首先闡明結論,在PHP中 self指向定義了當前被調(diào)用方法的類, static指向調(diào)用當前靜態(tài)方法的類。 接下來通過一個例子來證明上面的結果 class A { public static $_a = Class A; ...
摘要:有了的靜態(tài)延遲綁定功能,可以在運行時動態(tài)確定歸屬的類。與是被討論最多,也是最容易引起誤用的組合。的用途看完與上述三個關鍵字的區(qū)別,的用途是不是呼之即出一句話總結,那就是總是指向當前類及類實例。 轉載請注明文章出處:https://tlanyan.me/self-in-php/ PHP群里有人詢問self關鍵字的用法,答案是比較明顯的:靜態(tài)成員函數(shù)內(nèi)不能用this調(diào)用非成員函數(shù),但可以用...
摘要:的設計模式有很多種,本文取最簡單的三種模式工廠模式單例模式和注冊樹模式進行簡單的講解。文件創(chuàng)建完后,咱們回到單元測試文件文件再執(zhí)行一下單元測試命令發(fā)現(xiàn),也能返回成功,這樣的話我們就能很方便的修改任何驅(qū)動了。 php 設計模式之工廠模式、單例模式、注冊樹模式 在軟件工程中,創(chuàng)建型設計模式承擔著對象創(chuàng)建的職責,嘗試創(chuàng)建適合程序上下文的對象,對象創(chuàng)建設計模式的產(chǎn)生是由于軟件工程設計的問題,具...
摘要:靜態(tài)方法和屬性靜態(tài)方法是以類作為作用域的函數(shù)。靜態(tài)方法不能訪問這個類中的普通屬性,因為那些屬性屬于一個對象,但可以訪問靜態(tài)屬性。因此靜態(tài)方法和屬性又被稱為類變量和屬性,也就不能在靜態(tài)方法中使用偽變量。引入了延遲靜態(tài)綁定的概念。 靜態(tài)方法和屬性 靜態(tài)方法是以類作為作用域的函數(shù)。靜態(tài)方法不能訪問這個類中的普通屬性,因為那些屬性屬于一個對象,但可以訪問靜態(tài)屬性。如果修改了一個靜態(tài)屬性,那么這...
閱讀 920·2021-11-25 09:43
閱讀 1293·2021-11-17 09:33
閱讀 3010·2019-08-30 15:44
閱讀 3310·2019-08-29 17:16
閱讀 480·2019-08-28 18:20
閱讀 1637·2019-08-26 13:54
閱讀 553·2019-08-26 12:14
閱讀 2174·2019-08-26 12:14