有这样一个场景:我们把某班的所有同学都设为对象,他们都有一个班长属性,而且该班的班长为”K”,如果班长换成了”M”,那么要把学生的班长属性都改为”M”吗?
这是我们应该用到static关键字。
class students{
public static $monitor = "K";
public static function change($name){
self::$monitor = $name;
}
}
$kitt = new students();
echo "Last monitor is ".students::$monitor."<br>";
$kitt->change("M");
echo "New monitor is ".students::$monitor."<br>";
输出的结果为:
Last monitor is K
New monitor is M
静态成员的一些特性:
静态属性用于保存类的共有数据
静态方法里面只能访问静态属性
静态成员不需要实例化对象就可访问,即不需创建对象就可以存在的
类的内部可以通过self::$property或者static::$property访问自身静态成员
可以通过parent::$property访问父类的静态成员
在外部可以用本类的类名以及子类的类名来访问本类的静态变量
需要注意的地方是:
static变量只能用类名来调用,不能用对象来调用 classname::$property
类方法可以用对象来调用也可以用类名来调用。classname:fucntionName()
静态方法不能访问非静态的数据
非静态的方法可以访问静态数据