在php中,訪(fǎng)問(wèn)類(lèi)的方法/變量有兩種方法:
1. 創(chuàng )建對象$object = new Class(),然后使用”->”調用:$object->attribute/function,前提是該變量/方法可訪(fǎng)問(wèn)。
2. 直接調用類(lèi)方法/變量:class::attribute/function,無(wú)論是靜態(tài)/非靜態(tài)都可以。但是有前提條件:
A. 如果是變量,需要該變量可訪(fǎng)問(wèn)。
B. 如果是方法,除了該方法可訪(fǎng)問(wèn)外,還需要滿(mǎn)足:
b1) 如果是靜態(tài)方法,沒(méi)有特殊條件;
b2) 如果是非靜態(tài)方法,需要改方法中沒(méi)有使用$this,即沒(méi)有調用非靜態(tài)的變量/方法,當然,調用靜態(tài)的變量/方法沒(méi)有問(wèn)題。
然后我們再看一下使用$object->… 和使用class::… 都有什么區別:
1. 使用$object->… ,需要執行構造函數創(chuàng )建對象;
2. 使用class::… 調用靜態(tài)方法/變量,不需要執行構造函數創(chuàng )建對象;
3. 使用class::… 調用非靜態(tài)方法/變量,也不需要執行構造函數創(chuàng )建對象。
然后奇怪的地方就出來(lái)了,既然2和3都一樣,那靜態(tài)方法/變量存在還有什么意義呢?
差異還是顯然存在的,如下:
1. 靜態(tài)變量
靜態(tài)成員只保留一個(gè)變量值,而這個(gè)變量值對所有的實(shí)例都是有效,也就是說(shuō),所有的實(shí)例共享這個(gè)成員。
2. 靜態(tài)方法
靜態(tài)方法可以直接使用class::… 來(lái)調用,而非靜態(tài)方法需要滿(mǎn)足一定限制條件才能使用class::.. 的方法調用,如之前所述
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。