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