- 声明类属性或方法为静态,就可以不实例化类而直接访问。
- 静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
- 由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
- 静态属性不可以由对象通过 -> 操作符来访问。
- 用静态方式调用一个非静态方法会导致一个
E_STRICT
级别的错误。 - 静态属性只能被初始化为文字或常量,不能使用表达式。
- 可以把静态属性初始化为整数或数组,但不能初始化为另一个变量或函数返回值,也不能指向一个对象。
- 自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或 static。
9、静态属性通过 类名::属性名 调用
静态方法通过 类名::方法名() 调用
10、静态方法中$this伪变量不允许使用,
self::属性名 调用本类静态属性
self::方法名() 调用本类静态方法
parent::属性名 调用父类静态属性
parent::方法名() 调用父类静态方法
class Phone{
public static $name = '魅族17 Pro';
public static function getName(){
//调用内部静态属性
return self::$name;
}
public static function getColor(){
return self::$name.'天青色';
}
}
class Meizu extends Phone{
public static function color(){
//调用父类静态方法
parent::getColor();
}
}
$phone::color();
//调用内部静态方法
echo $phone::getName();