首頁 > 後端開發 > PHP問題 > php中self和this的差別與用法詳細介紹

php中self和this的差別與用法詳細介紹

王林
發布: 2023-02-23 17:18:02
原創
3965 人瀏覽過

php中self和this的差別與用法詳細介紹

PHP中this和self關鍵字的區別

1、self代表類,$this代表物件
2、能用$this的地方一定使用self,能用self的地方不一定能用$this
3、靜態的方法中不能使用$this,靜態方法給類別存取的。

PHP中this和self關鍵字的用法:

#self是引用靜態類別的類別名,而$this是引用非靜態類別的實例名。

static 的屬性和方法,只能存取static的屬性和方法,不能類別存取非靜態的屬性和方法。

因為靜態屬性和方法被建立時,可能還沒有任何這個類別的實例可以被呼叫。

static的屬性,在記憶體中只有一份,為所有的實例共用。

使用self:: 關鍵字存取目前類別的靜態成員。

一個類別的所有實例,共用類別中的靜態屬性。

也就是說,在記憶體中即使有多個實例,靜態的屬性也只有一份。

下面範例中的設定了一個計數器$count屬性,設定private 和 static 修飾。

這樣,外界並不能直接存取$count屬性。而程式運行的結果我們也看到多個實例在使用同一個靜態的$count 屬性。

<?php    
class user  
{    
   private static $count = 0 ; //记录所有用户的登录情况.    
   public function __construct() {    
       self::$count = self::$count + 1;    
   }    
   public function getCount() {      
       return self::$count;    
   }    
   public function __destruct() {    
       self::$count = self::$count - 1;    
   }    
}    
$user1 = new user();    
$user2 = new user();    
$user3 = new user();    
echo "now here have " . $user1->getCount() . " user";    
echo "<br />";    
unset($user3);    
echo "now here have " . $user1->getCount() . " user";    
?>
登入後複製

    

靜態屬性直接呼叫

靜態屬性不需要實例化就可以直接使用,在類別還沒創建時就可以直接使用。

使用的方式是: 類別名稱::靜態屬性名稱

<?php    
class Math  
{    
   public static $pi = 3.14;    
}    
// 求一个半径3的园的面积。    
$r = 3;    
echo "半径是 $r 的面积是<br />";    
echo Math::$pi * $r * $r;    
echo "<br /><br />";    
//这里我觉得 3.14 不够精确,我把它设置的更精确。    
Math::$pi = 3.141592653589793;    
echo "半径是 $r 的面积是<br />";    
echo Math::$pi * $r * $r;      
?>
登入後複製

    

類別沒有創建,靜態屬性就可以直接使用。

靜態方法

靜態方法不需要所在類別被實例化就可以直接使用。

使用的方式是 類別名稱::靜態方法名稱

相了解更多相關內容請造訪PHP中文網:PHP影片教學

#

以上是php中self和this的差別與用法詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板