首頁 >後端開發 >php教程 >php物件導向程式設計self和static的區別 matlab物件導向程式設計 c#物件導向程式設計思想 物件導向程式設計語言

php物件導向程式設計self和static的區別 matlab物件導向程式設計 c#物件導向程式設計思想 物件導向程式設計語言

WBOY
WBOY原創
2016-07-29 08:50:421270瀏覽

在php的物件導向程式設計中,總是會遇到

class test{
 public static function test(){
  self::func();

  static::func();
 }

 public static function func(){}
}

可你知道self和static的差別?

其實差別很簡單,只要寫幾個demo就能懂:

Demo for self:

class Car
{
 public static function model(){
  self::getModel();
 }

 protected static function getModel(){
  echo "This is a car model";
 }
}

Car::model();

輸出

Class Taxi extends Car
{
 protected static function getModel(){
  echo "This is a Taxi model";
 }
}


可以發現,self在子類中還是會調用父類的方法

Demo for static

This is a car model
This is a car model


呼叫的是父類別的方法,但是父類別方法中呼叫的方法還會是子類別的方法(好繞嘴。)

在PHP5.3版本以前,static和self還是有一點區別,具體是什麼,畢竟都是7版的天下了。就不去了解了。

總結呢:self只能引用當前類別中的方法,而static關鍵字允許函數能夠在運行時動態綁定類別中的方法。

以上就介紹了php物件導向程式設計self和static的差別,包括了物件導向程式設計,static方面的內容,希望對PHP教學有興趣的朋友有幫助。

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