天天看點

php class中self,parent,this的差別,以及執行個體

一,this

1,要用this,你必有是一個對像的形勢,不然它會報錯的,Fatal error: Using $this when not in object context。

2,this可以調用本類中的方法和屬性,也可以調用父類中的可以調的方法和屬性

二,self

1,self可以通路本類中的靜态屬性和靜态方法,可以通路父類中的靜态屬性和靜态方法。

2,用self時,可以不用執行個體化的

三,parent

1,parent可以通路父類中的靜态屬性和靜态方法。

2,用parent時,可以不用執行個體化的

四,執行個體

1,當我們調用$test->tank();這個方法時,tank裡面的$this是一個對像,這個對像可以調用本類,父類中的方法和屬性,

2,test1::test1_function();當我們用靜态的方法去調用非靜态方法時,會顯示警告的,Non-static method test::test1_function() should not be called statically可以看出不,self可以調用本類,父類中的靜态屬性,parent可以調用父類中的靜态屬性,二者調用非靜态屬性會報錯。代碼中有注釋

3,test1::extends_function();這一步會報錯,報在非對像中使用$this。為什麼會這樣呢,test1::extends_function();隻是調用了class中的一個方法,并沒有執行個體化,是以根本不存在什麼對像,當父類中用到$this時,就會報錯