標籤:des blog 使用 io ar div cti log on
static關鍵字用來修飾屬性、方法,稱這些屬性、方法為靜態屬性、靜態方法。static關鍵字聲明一個屬性或方法是和類相關的,而不是和類的某個特定的執行個體相關,因此,這類屬性或方法也稱為“類屬性”或“類方法”。如果存取控制許可權允許,可不必建立該類對象而直接使用類名加兩個冒號“::”調用。static關鍵字可以用來修飾變數、方法。不需要經過執行個體化,就可以直接存取類中static的屬性和static的方法。static 的屬性和方法,只能訪問static的屬性和方法,不能類訪問非靜態屬性和方法。因為靜態屬性和方法被建立時,可能還沒有任何這個類的執行個體可以被調用。static的屬性,在記憶體中只有一份,使用self:: 關鍵字訪問當前類的靜態成員或方法。<?php//非靜態方法調用靜態屬性class General_Call_Static_Property{ private static $count=0; public function __construct(){ self::$count=self::$count+1; //非靜態方法不需要執行個體化就可以使用靜態屬性,在類還沒有建立時就可以直接使用。使用方式是self::靜態屬性名 } public function print_content(){ return self::$count; } public function __destruct() { self::$count=self::$count - 1; } }$obj1=new General_Call_Static_Property();$obj2=new General_Call_Static_Property();$obj3=new General_Call_Static_Property();echo $obj1->print_content().‘<br />‘;//3echo $obj2->print_content().‘<br />‘;//3unset($obj2);echo $obj3->print_content().‘<br />‘;//2//非靜態方法調用靜態方法class General_Call_Static_Method{ public static function compare($num1,$num2){ return $num1>$num2?$num1:$num2; } public function result($num1,$num2,$num3){ $first=self::compare($num1,$num2);//非靜態方法不需要執行個體化就可以使用靜態屬性,使用方式是self::靜態方法名 $second=self::compare($num2,$num3); $max=self::compare($firsrt,$second); return $max; }}$show=new General_Call_Static_Method();$a=33;$b=16;$c=70;echo ‘顯示$a,$b,$c的最大值:‘.$show->result($a,$b,$c).‘<br />‘;//70//直接調用靜態屬性class Call_Property{ public static $p=3.14;}$r=5;echo ‘半徑為r的圓面積:‘.Call_Property::$p *$r *$r.‘<br />‘; //78.5 靜態屬性不需要執行個體化就可以直接使用,在類還沒有建立時就可以直接使用。使用方式是類名::靜態屬性名//直接調用靜態方法class Call_Method{ public static function Max($num1,$num2){ return $num1>$num2?$num1:$num2; }}echo ‘比較兩個數的最大值:‘.Call_Method::Max(49,23).‘<br />‘;//49 靜態方法不需要所在類被執行個體化就可以直接使用。使用方式是類名::靜態方法名$a=6;$b=14;echo ‘比較$a和$b大小:‘.Call_Method::Max($a,$b).‘<br />‘;//14//靜態方法調用靜態方法class Call_Static_Method{ private static $property=10; public static function count(){ echo self::$property=self::$property+1; //靜態方法調用靜態變數使用方式是self::靜態變數名 } public static function result(){ return self::count(); //靜態方法調用靜態方法使用方式是self::靜態方法名 }}Call_Static_Method::result();//11?>
php中靜態屬性靜態方法的用法