php面向對象編程self和static的區別
來源:易賢網 閱讀:907 次 日期:2016-08-24 14:40:11
溫馨提示:易賢網小編為您整理了“php面向對象編程self和static的區別”,方便廣大網友查閱!

這篇文章主要介紹了PHP中static關鍵字以及與self關鍵字的區別,本文講解了static關鍵字的定義、遲綁定(Late Static Bindings)、以及與self關鍵字的區別等內容,需要的朋友可以參考下

在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";

 }

}

Taxi::model():

得到輸出

This is a car model

This is a car model

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

Demo for static

class Car

{

 public static function model(){

  static::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";

 }

}

Taxi::model();

得到輸出

This is a car model

This is a Taxi model

可以看到,在調用static,子類哪怕調用的是父類的方法,但是父類方法中調用的方法還會是子類的方法(好繞嘴。。)

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

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

更多信息請查看網絡編程
易賢網手機網站地址:php面向對象編程self和static的區別
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看