PHP中this,self和static的區別

2021-07-28 02:58:57 字數 788 閱讀 3646

首先,雖然我自詡是php程式設計師,卻很少寫關於php的部落格內容,我感覺自己是個假的php程式設計師

其次今天學習到了php物件導向的內容,被3個東西搞昏了,this,static和self。

self和this還是很好區分的,可是self和static就很糊塗了,兩者都能呼叫靜態的方法和屬性,看似使用上沒有什麼太大的分別,但是實際上分別很大,先來看下面這一段**:

<?php 

abstract class example

}//想法很美好,現實卻是很骨幹,上面的這種寫法是錯誤的,下面這種寫法才是正確的

abstract class example2

}

解釋具體原因之前先來看這位大哥寫的乙個例子:

self與static區別

我來簡單總結一下他說明的含義:static不是指該類本身,而是具有一定的延遲性,不僅僅侷限於當前的類當中。如那位大哥例子中最後輸出的是foo的資訊,而不是static在的**中的boo的資訊。

模擬到最開始的例子中我們就能知道,我們希望當呼叫create()方法時能返回該類本身,但是如果我們使用了self()的話,那麼只能返回new example(),而example類是abstract,抽象類,抽象類不能例項化,所以不能使用self,而只能使用static()。當有類來繼承example2的時候,就會返回當前繼承的類,而不是example2了。

接著就是this跟self的區別了,這個倒是還蠻好理解的,跟static相關的this全部不能解決,只能交給static和self,同時非static的,this可以完全搞定。

樹狀陣列和ST表

binary index tree 用來解決動態字首和問題的資料結構。樹狀陣列或者二叉索引樹也稱作binary indexed tree,又叫做fenwick樹 它的查詢和修改的時間複雜度都是log n 空間複雜度則為o n 這是因為樹狀陣列通過將線性結構轉化成樹狀結構,從而進行跳躍式掃瞄。通常使用...

linux中的特殊許可權s t

許可權 特殊許可權 s t以檔案屬主的許可權執行該程式 root localhost mnt ll usr bin passwd rwsr xr x 1 root root 22960 2006 07 17 usr bin passwd chmod u rwx,g rx,o rx sbin shut...

RDD的依賴關係和Spark任務中的Stage

rdd和它依賴的父rdd s 的關係有兩種不同的型別,即窄依賴 narrow dependency 和寬依賴 wide dependency 總結 窄依賴我們形象的比喻為獨生子女 總結 窄依賴我們形象的比喻為超生 dag directed acyclic graph 叫做有向無環圖,原始的 rdd通...