資源描述:
《淺析php靜態(tài)方法與非靜態(tài)方法的用法區(qū)別.doc》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。
1、淺析php靜態(tài)方法與非靜態(tài)方法的用法區(qū)別在php編程中,static關鍵字聲明一個屬性或方法是和類相關的,而不是和類的某個特定的實例相關,因此,這類屬性或方法也稱為“類屬性”或“類方法”如果訪問控制權限允許,可不必創(chuàng)建該類對象而直接使用類名加兩個冒號“::”調(diào)用。static關鍵字可以用來修飾變量、方法。不經(jīng)過實例化,就可以直接訪問類中static的屬性和static的方法。static的屬性和方法,只能訪問static的屬性和方法,不能類訪問非靜態(tài)的屬性和方法。因為靜態(tài)屬性和方法被創(chuàng)建時,可能還沒有任何這個類的實例可以被
2、調(diào)用。static的屬性,在內(nèi)存中只有一份,為所有的實例共用。使用self::關鍵字訪問當前類的靜態(tài)成員。一個類的所有實例,共用類中的靜態(tài)屬性。即在內(nèi)存中即使有多個實例,靜態(tài)的屬性也只有一份。例子,設置了一個計數(shù)器$count屬性,設置private和static修飾。這樣,外界并不能直接訪問$count屬性。而程序運行的結(jié)果也看到多個實例在使用同一個靜態(tài)的$count屬性。It;?phpnbsp;classusernbsp;{nbsp;nbsp;privatestatic$count=0;//記錄所有用戶的登錄情況.nb
3、sp;nbsp;publicfunction_construet(){nbsp;nbsp;seIf::$count=self::$count+1;nbsp;nbsp;}nbsp;nbsp;publicfunctiongetcount(){nbsp;nbsp;returnself::$count;nbsp;nbsp;}nbsp;nbsp;publicfunction_destruct(){nbsp;nbsp;self::$count二self::$countT;nbsp;nbsp;}nbsp;}nbsp;$userl=new
4、user():nbsp;$user2=newuser():nbsp;$user3=newuser():nbsp;echo〃nowherehave"?$userl~gt;getcount().〃user〃;nbsp;echo;br/gt;nbsp;unset($user3):nbsp;echo〃nowhereha.ve"?$userl~gt;getcount()?〃user,z;nbsp;?gt;二,靜態(tài)屬性直接調(diào)用靜態(tài)屬性不需要實例化就可以直接使用,在類還沒有創(chuàng)建時就可以直接使用。使用方式:類名::靜態(tài)屬性名It;?php
5、nbsp;classmathnbsp;{nbsp;nbspjpublicstatic$pi=3?14;nbsp;}nbsp;//求一個半徑3的園的面積。nbsp;$r=3;nbsp;echo"半徑是$r的面積是It;br/gt;";nbsp;echomath::$pi*$r*$r;nbsp;echor/gt;It;br/gt;〃;nbsp;〃這里我覺得3.14不夠精確,我把它設置的更精確。nbsp;math::$pi=3.141592653589793:nbsp;echo"半徑是$r的面積是lt;br/gt;〃;nbsp;
6、?gt;類沒有創(chuàng)建,靜態(tài)屬性就可以直接使用。那靜態(tài)屬性在什么時候在內(nèi)存中被創(chuàng)建?在php中沒有看到相關的資料。引用java中的概念,來解釋應該也具有通用性。靜態(tài)屬性和方法,在類被調(diào)用時創(chuàng)建。三,靜態(tài)方法靜態(tài)方法不需要所在類被實例化就可以直接使用。使用的方式是類名::靜態(tài)方法名繼續(xù)寫這個math類,用來進行數(shù)學計算。設計一個方法用來算出其中的最大值。既然是數(shù)學運算,也沒有必要去實例化這個類,如果這個方法可以拿過來就用就方便多了。這只是為了演示static方法而設計的這個類。在php提供了niax()函數(shù)比較數(shù)值。It;?ph
7、pnbsp;classmathnbsp;{nbsp;nbsp;publicstaticfunctionmax($numl,$num2){nbsp;nbsp;return$numlgt;$num2?$numl:$num2;nbsp;nbsp;}nbsp:nbsp;}nbsp;$a=99;nbsp;$b=88:nbsp;echo"顯示$玄和$匕中的最大值是";nbsp;echo〃lt;br/g;nbsp;echomath::max($a,$b):nbsp;echo;bi7gt;〃;nbsp;echo〃lt:br/gt;z/;n
8、bsp;echo〃lt;br/gt;〃;nbsp;$a=99;nbsp;$b=100;nbsp;echo"顯示$8和$1)中的最大值是";nbsp;echo^ltjbr/gt;z/;nbsp;echomath::max($a,$b);nbsp;?gt;靜態(tài)方法如何調(diào)用靜態(tài)方法第一個例子,一個靜態(tài)方法調(diào)用