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

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

Sep 05, 2019 pm 03:51 PM
php self this 差別

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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

c語言函數的基本要求有哪些 c語言函數的基本要求有哪些 Apr 03, 2025 pm 10:06 PM

C語言函數是代碼模塊化和程序搭建的基礎。它們由聲明(函數頭)和定義(函數體)組成。 C語言默認使用值傳遞參數,但也可使用地址傳遞修改外部變量。函數可以有返回值或無返回值,返回值類型必須與聲明一致。函數命名應清晰易懂,使用駝峰或下劃線命名法。遵循單一職責原則,保持函數簡潔性,以提高可維護性和可讀性。

說明匹配表達式(PHP 8)及其與開關的不同。 說明匹配表達式(PHP 8)及其與開關的不同。 Apr 06, 2025 am 12:03 AM

在PHP8 中,match表達式是一種新的控制結構,用於根據表達式的值返回不同的結果。 1)它類似於switch語句,但返回值而非執行語句塊。 2)match表達式使用嚴格比較(===),提升了安全性。 3)它避免了switch語句中可能的break遺漏問題,增強了代碼的簡潔性和可讀性。

c和c#的區別和聯繫有哪些 c和c#的區別和聯繫有哪些 Apr 03, 2025 pm 10:36 PM

C和C#雖有類似之處,但截然不同:C是面向過程、手動內存管理、平台依賴的語言,用於系統編程;C#是面向對象、垃圾回收、平台獨立的語言,用於桌面、Web應用和遊戲開發。

JavaScript中如何從指定DOM節點下使用XPath進行查找? JavaScript中如何從指定DOM節點下使用XPath進行查找? Apr 04, 2025 pm 11:15 PM

DOM節點下XPath查找方法詳解在JavaScript中,我們經常需要根據XPath表達式從DOM樹中查找特定的節點。如果需要從某�...

什麼是跨站點偽造(CSRF),您如何在PHP中實施CSRF保護? 什麼是跨站點偽造(CSRF),您如何在PHP中實施CSRF保護? Apr 07, 2025 am 12:02 AM

在PHP中可以通過使用不可預測的令牌來有效防範CSRF攻擊。具體方法包括:1.生成並在表單中嵌入CSRF令牌;2.在處理請求時驗證令牌的有效性。

H5和小程序與APP的區別 H5和小程序與APP的區別 Apr 06, 2025 am 10:42 AM

H5、小程序和APP的主要區別在於:技術架構:H5基於網頁技術,小程序和APP為獨立應用程序。體驗和功能:H5輕便易用,功能受限;小程序輕量級,交互性好;APP功能強大,體驗流暢。兼容性:H5跨平台兼容,小程序和APP受平台限制。開發成本:H5開發成本低,小程序中等,APP最高。適用場景:H5適合信息展示,小程序適合輕量化應用,APP適合複雜功能應用。

您如何防止班級被擴展或方法在PHP中被覆蓋? (最終關鍵字) 您如何防止班級被擴展或方法在PHP中被覆蓋? (最終關鍵字) Apr 08, 2025 am 12:03 AM

在PHP中,final關鍵字用於防止類被繼承和方法被重寫。 1)標記類為final時,該類不能被繼承。 2)標記方法為final時,該方法不能被子類重寫。使用final關鍵字可以確保代碼的穩定性和安全性。

See all articles