static關(guān)鍵字用來(lái)修飾屬性、方法,稱這些屬性、方法為靜態(tài)屬性、靜態(tài)方法。
10年的平湖網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整平湖建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“平湖網(wǎng)站設(shè)計(jì)”,“平湖網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
static關(guān)鍵字聲明一個(gè)屬性或方法是和類相關(guān)的,而不是和類的某個(gè)特定的實(shí)例相關(guān),因此,這類屬性或方法也稱為“類屬性”或“類方法”,如果訪問(wèn)控制權(quán)限允許,可不必創(chuàng)建該類對(duì)象而直接使用類名加兩個(gè)冒號(hào)“::”調(diào)用。
static關(guān)鍵字可以用來(lái)修飾變量、方法。
不經(jīng)過(guò)實(shí)例化,就可以直接訪問(wèn)類中static的屬性和static的方法。
static 的屬性和方法,只能訪問(wèn)static的屬性和方法,不能類訪問(wèn)非靜態(tài)的屬性和方法。因?yàn)殪o態(tài)屬性和方法被創(chuàng)建時(shí),可能還沒(méi)有任何這個(gè)類的實(shí)例可以被調(diào)用。
static的屬性,在內(nèi)存中只有一份,為所有的實(shí)例共用。
使用self:: 關(guān)鍵字訪問(wèn)當(dāng)前類的靜態(tài)成員。一個(gè)類的所有實(shí)例,共用類中的靜態(tài)屬性。也就是說(shuō),在內(nèi)存中即使有多個(gè)實(shí)例,靜態(tài)的屬性也只有一份。
靜態(tài)屬性直接調(diào)用? ? 靜態(tài)屬性不需要實(shí)例化就可以直接使用,在類還沒(méi)有創(chuàng)建時(shí)就可以直接使用。
1.?即使類中的方法并未用static聲明,但其未使用到可改變的類成員變量,在外部仍可用操作符::來(lái)調(diào)用;
2.?以靜態(tài)方式(用::操作符)調(diào)用的方法中$this的取值是由調(diào)用時(shí)的上下文決定的!而不是定義他的類!!
例如以下的代碼:
?php?
class?TestClass1?
{?
public?$normal_v?=?'normal_v?from?TestClass1';?
public?static?$STATIC_V?=?'STATIC_V?from?TestClass1';?
public?function?test_func1()?
{?
echo?$this-normal_v.'br?/'.self::$STATIC_V;?
}?
}?
class?TestClass2?
{?
public?$normal_v?=?'normal_v?from?TestClass2';?
public?static?$STATIC_V?=?'STATIC_V?from?TestClass2';?
public?function?test_func2()?
{?
TestClass1::test_func1();?
}?
}?
$t2?=?new?TestClass2();?
$t2-test_func2();
這段代碼是輸出會(huì)是什么呢,我原以為會(huì)是normal_v from TestClass1 br / STATIC_V from TestClass1,測(cè)試發(fā)現(xiàn)其實(shí)我錯(cuò)了,正確的輸出是:
normal_v from TestClass2
STATIC_V from TestClass1
說(shuō)明:test_func1()雖然是在TestClass1中定義的,但卻是在TestClass2中調(diào)用的,其內(nèi)部的$this變量則是由TestClass2決定的!
其實(shí)這兩個(gè)類的關(guān)系應(yīng)該屬于"雙向關(guān)聯(lián)".
static 變量是php中的變量作用范圍的一個(gè)重要特性
靜態(tài)變量?jī)H在局部函數(shù)域中存在且只被初始化一次,當(dāng)程序執(zhí)行離開此作用域時(shí),其值不會(huì)消失,會(huì)使用上次執(zhí)行的結(jié)果
一個(gè)普通的變量,如 $message 在它所在的函數(shù)執(zhí)行完之后就被釋放了
即第二個(gè)function執(zhí)行10次,每次執(zhí)行完后,$message變量被釋放,所以每次都是1
變量前加了static后,該變量在它所在的函數(shù)執(zhí)行完后不會(huì)被釋放
即第一個(gè)function每次被執(zhí)行后,static $message沒(méi)有被釋放,它將被繼續(xù)累加