PHP執行SQL文件并將SQL文件導入到數據庫
777
2023-12-10
最近在一個視頻的評論被問到一個小問題:這里選擇用static 而不是self有特殊的考慮么?或者我們可以這樣轉換一下問題:
PHP 的 new static 和 new self 具體有什么?
其實這個來看一個例子應該就很清晰了:
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 self
1.self返回的是 new self 中關鍵字 new 所在的類中,比如這里例子的 :
public static function getSelf() { return new self(); // new 關鍵字在 Father 這里 }
始終返回 Father。
new static
2.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
#免責聲明#
本站[綠夏技術導航]提供的一切軟件、教程和內容信息僅限用于學習和研究目的;不得將上述內容用于商業或者非法用途,否則,一切后果請用戶自負。本站信息來自網絡收集整理,版權爭議與本站無關。您必須在下載后的24個小時之內,從您的電腦或手機中徹底刪除上述內容。如果您喜歡該程序或內容,請支持正版,購買注冊,得到更好的正版服務。我們非常重視版權問題,如有侵權請郵件[admin@lxwl520.com]與我們聯系進行刪除處理。敬請諒解!