PHP类的静态(static)方法和静态(static)变量使用介绍
在php中,訪問(wèn)類的方法/變量有兩種方法:?
1. 創(chuàng)建對(duì)象$object = new Class(),然后使用”->”調(diào)用:$object->attribute/function,前提是該變量/方法可訪問(wèn)。?
2. 直接調(diào)用類方法/變量:class::attribute/function,無(wú)論是靜態(tài)/非靜態(tài)都可以。但是有前提條件:?
A. 如果是變量,需要該變量可訪問(wèn)。?
B. 如果是方法,除了該方法可訪問(wèn)外,還需要滿足:?
b1) 如果是靜態(tài)方法,沒(méi)有特殊條件;?
b2) 如果是非靜態(tài)方法,需要該方法中沒(méi)有使用$this,即沒(méi)有調(diào)用非靜態(tài)的變量/方法,當(dāng)然,調(diào)用靜態(tài)的變量/方法沒(méi)有問(wèn)題。?
?
然后我們?cè)倏匆幌率褂?object->… 和使用class::… 都有什么區(qū)別:?
1. 使用$object->… ,需要執(zhí)行構(gòu)造函數(shù)創(chuàng)建對(duì)象;?
2. 使用class::… 調(diào)用靜態(tài)方法/變量,不需要執(zhí)行構(gòu)造函數(shù)創(chuàng)建對(duì)象;?
3. 使用class::… 調(diào)用非靜態(tài)方法/變量,也不需要執(zhí)行構(gòu)造函數(shù)創(chuàng)建對(duì)象。?
?
然后奇怪的地方就出來(lái)了,既然2和3都一樣,那靜態(tài)方法/變量存在還有什么意義呢??
差異還是顯然存在的,如下:?
1. 靜態(tài)變量?
靜態(tài)成員只保留一個(gè)變量值,而這個(gè)變量值對(duì)所有的實(shí)例都是有效,也就是說(shuō),所有的實(shí)例共享這個(gè)成員。?
2. 靜態(tài)方法?
靜態(tài)方法可以直接使用class::… 來(lái)調(diào)用,而非靜態(tài)方法需要滿足一定限制條件才能使用class::.. 的方法調(diào)用,如之前所述
總結(jié)
以上是生活随笔為你收集整理的PHP类的静态(static)方法和静态(static)变量使用介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 点阵激光间隔多久做一次?
- 下一篇: 家常凉菜做法大全?