php中静态属性静态方法的用法
上一篇 /
下一篇 2012-02-07 13:36:22
/ 个人分类:测试之路
Flash:
搞笑
tatic关键字用来修饰属性、方法,称这些属性、方法为静态属性、静态方法。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
/>';//3
echo $obj2->print_content().'<br
/>';//3
unset($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
?>
收藏
举报
TAG: