欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP new static 和 new self詳解

 更新時間:2017年02月19日 16:49:50   投稿:hebedich  
使用 self:: 或者 __CLASS__ 對當前類的靜態(tài)引用,取決于定義當前方法所在的類:使用 static:: 不再被解析為定義當前方法所在的類,而是在實際運行時計算的。也可以稱之為“靜態(tài)綁定”,因為它可以用于(但不限于)靜態(tài)方法的調用。

最近在一個視頻的評論被問到一個小問題:這里選擇用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 會返回執(zhí)行 new static() 的類,比如 Son 執(zhí)行 get_class(Son::getStatic()) 返回的是 Son, Father 執(zhí)行 get_class(Father::getStatic()) 返回的是 Father

而在沒有繼承的情況下,可以認為 new selfnew static是返回相同的結果。

Tips: 可以用一個好的 IDE 來直接看注釋。比如 PhpStorm:

Happy Hacking

相關文章

  • php 無限極分類

    php 無限極分類

    至于添加刪除之類的功能我就不多寫了!仔細看看就知道這么用了. 難的是顯示方面 希望高手擴展一下! 這是類
    2008-03-03
  • php查詢類的方法總結

    php查詢類的方法總結

    在本篇文章里小編給大家整理了一篇關于php查詢類的方法總結內容,對此有興趣的朋友們可以跟著學習下。
    2022-01-01
  • 啟用Csrf后POST數據時出現的400錯誤

    啟用Csrf后POST數據時出現的400錯誤

    這篇文章主要介紹了啟用Csrf后POST數據時出現的400錯誤的相關資料,需要的朋友可以參考下
    2015-07-07
  • PHP+MariaDB數據庫操作基本技巧備忘總結

    PHP+MariaDB數據庫操作基本技巧備忘總結

    這篇文章主要介紹了PHP+MariaDB數據庫操作基本技巧,結合實例形式總結分析了PHP+MariaDB數據庫連接、判斷以及基于PHP+MariaDB的用戶登陸、管理、刪除等相關操作實現技巧與注意事項,需要的朋友可以參考下
    2018-05-05
  • phpmyadmin的#1251問題

    phpmyadmin的#1251問題

    phpmyadmin的#1251問題...
    2006-11-11
  • PHP 加密解密內部算法

    PHP 加密解密內部算法

    最近學習URL跳轉的時候新進三個超好用的PHP加密解密函數,貌似是discuz里的…使用這些加密解密的原因是因為有時自己的URL地址被人獲取以后想破解你里面?zhèn)髦档膬热菥捅仨氈滥愕膋ey,沒有key,他應該要破了一陣子才能知道你URL里面的內容吧。
    2010-04-04
  • PHP中iconv函數知識匯總

    PHP中iconv函數知識匯總

    iconv函數庫能夠完成各種字符集間的轉換,是php編程中不可缺少的基礎函數庫。本文內容是參考了網上的其他資源,然后結合自己的實踐,有需要的小伙伴可以參考下。
    2015-07-07
  • PHP類的封裝與繼承詳解

    PHP類的封裝與繼承詳解

    類是面向對象中的重要概念,而封裝和繼承是面向對象的重要特點。這篇文章我們就重點討論一下封裝、繼承這兩個特點,給出一些列子,供大家學習參考。
    2015-09-09
  • 如何在symfony中導出為CSV文件中的數據

    如何在symfony中導出為CSV文件中的數據

    如果您需要在symfony中將數據庫中的數據導出為CSV文件,試試這個
    2011-10-10
  • php數組操作之鍵名比較與差集、交集賦值的方法

    php數組操作之鍵名比較與差集、交集賦值的方法

    這篇文章主要介紹了php數組操作之鍵名比較與差集、交集賦值的方法,涉及PHP針對數組的各種常見操作,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-11-11

最新評論