php物件導向中self和static的區別

2021-09-19 08:57:24 字數 901 閱讀 8686

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

class test

public static function func(){}

}

可你知道self和static的區別麼?

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

class car

protected static function getmodel()

}car::model();

class taxi extends car

}taxi::model();

得到輸出

this is a car model

this is a car model

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

class car

protected static function getmodel()

}car::model();

class taxi extends car

}taxi::model();

得到輸出

this is a car model

this is a taxi model

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

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

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

參考

物件導向 類和引數self介紹

1.什麼是物件?物件指的是記憶體中儲存指定資料的一塊區域 1.1.python就是一門物件導向的程式語言,可這樣理解語言中的所有操作操作都是通過物件進行的 1.2.面向過程 它指將我們的程式分解為乙個個步驟,通過對每個步驟的抽象來完成程式,但這種編寫方式只適用乙個功能,如果要實現別的功能,往往復用性...

PHP中self 和 this 的用法

在訪問php類中的成員變數或方法時,1.類外部呼叫 如果被引用的變數或者方法被宣告成const 定義常量 或者static 宣告靜態 那麼就必須使用操作符 反之如果被引用的變數或者方法沒有被宣告成const或者static,那麼就必須使用操作符 2.類內部呼叫 如果從類的內部訪問const或者sta...

php物件導向分頁,PHP中物件導向的分頁類

page new page 53,10 p page rendor echo var dump p echo 分頁類 class page protected url url protected pagecount 總頁數 protected total 總條數 protected num 每頁顯示...