PHP中除了常规的类和方法的使用,控制访问之外,还有静态关键字static。
静态变量可以是局部变量也可以是全局变量,当一个程序段执行完毕时,静态
变量并没有消失,它依然存在与内存中,下次再定义时还是以前的值,常用于
递归或子函数中保留以前的值,可以用来定义变量与方法。
静态属性和方法可以在不实例化类的情况下调用,直接使用 类名: :方法名 的方式
进行调用。所以伪变量$this在此处不可用。
静态属性不可以由对象通过“->”操作符来访问。
用静态方式调用一个非静态方法会导致一个E_STRICT级别的错误。
例1:调用静态属性与静态方法
<?php
class Car{
public static $name="汽车";
public static function getName(){
return self::$name;
}
}
echo Car::$name; //输出为”汽车“
echo Car::getName(); //输出为”汽车“
?>
静态方法也可以通过变量来进行动态调用。如例2:
例2:
<?php
class Car{
public static $name="汽车";
public static function getName(){
return self::$name;
}
}
$fun1='Car';
$fun2='getName';
echo $fun1::$fun2(); //输出结果为"汽车"
?>
静态方法中,$this伪变量不允许使用。可以使用使用self,parent,static在内部调
用静态方法与属性。
<?php
class Car{
public static $name="汽车";
public static $city="上海";
public static function getName(){
return self::$name;
}
public static function getCity(){
return self::$city;
}
}
class aCar extends Car{
public static function start(){
parent::getCity();
}
public static function tag(){
parent::getName();
}
}
echo aCar::getName(); //输出为"汽车"
echo aCar::getCity(); //输出为"上海"
本节完。