首页/PHP/PHP中static静态属性与静态方法的用法

PHP中static静态属性与静态方法的用法

PHP中static静态属性与静态方法的用法

特性:
    • 静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。
    • 静态属性不可以由对象->操作符来访问,而静态方法可以。
    • 用静态方式调用一个非静态方法会导致一个 E_STRICT 级别的错误。
    • 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。

<?php
class person{
	public static $name="张三";
	public $height=180;

	public static function tell(){
		echo self::$name;		//静态方法调用静态属性
		echo $this->height;		//错,参见特性1
	}

	public function say(){
		echo self::$name."身高".$this->height."在说什么";
		self::tell();		//非静态法,调用静态属性,静态方法
	}
}
?>

<?php
person::$name;		//类名::访问静态属性
person::tell();		//类型::访问静态方法
$p1 = new person();
$p1->tell();		//参见特性2
?>

<?php
person::$name = "王五";		//参见特性4
$p2 = new person();		
$p2->tell();	//静态成员的值改变后,那么所有实例化对象的值都将改变。
?>

总结:

    • 静态属性与方法,无需实例化即可访问,通过类型::形式进行访问。
    • 静态方法可以通过对象->操作符来访问
    • 静态方法不能调用非静态属性。
收藏:

相关资讯