PHP 中除了常规类和方法的使用,访问控制之外,还有静态关键字static,静态变量可以是局部变量也可以是全局变量,当一个程序段执行完毕时,静态变量并没有消失,它依然存在于内存中,下次再定义时还是以前的值,常用于递归或者子函数中保留之前的值,可以用来定义变量和方法。
下面举例说明:
<?php class Foo { public static $my_static = 'foo'; public function staticValue() { return self::$my_static; } } class Bar extends Foo { public function fooStatic() { return parent::$my_static; } } print Foo::$my_static . "\n"; //foo $foo = new Foo(); print $foo->staticValue() . "\n"; // foo print $foo->my_static . "\n"; // Undefined "Property" my_static print $foo::$my_static . "\n"; // foo $classname = 'Foo'; print $classname::$my_static . "\n"; // As of PHP 5.3.0 print Bar::$my_static . "\n"; // foo $bar = new Bar(); print $bar->fooStatic() . "\n"; // foo ?>
点击 "运行实例" 按钮查看在线实例
总结:
① 一般静态属性用于保存类的公有数据
② 静态方法内部只能访问静态属性,包括本类和父类的
③ 静态成员不需要实例化对象就能访问
④ 在本类内部访问静态属性用self或static关键字访问,后面要带上‘$’,比如self::$my_static
,parent::$my_static
⑤ 访问父类静态属性使用parent,比如:parent::$my_static
⑥ 在类外部访问静态变量或者方法是使用类名直接访问,无需实例化。比如:Bar::$my_static