1.6. PHP 范围解析操作符(::)、静态成员

范围解析操作符或者更简单地说是一对冒号‘::’

作用:用于访问 静态成员、类常量、访问被覆盖类中的方法

类外部:类名::常量名、静态成员

类内部:self::常量名、静态成员     parent::常量名、静态成员、覆盖类中方法 

静态成员

在声明成员的时候只需要在其可见性前或者后加上 static 则该成员就是静态成员 

可见性 static 变量名[=值]; 

可见性 static function 方法名(...){    }


将变量声明为静态的作用:

1. 类的静态成员和函数里的静态变量相似

2. 静态变量不能被通过对象访问到, 直到通过类名称(在类内部通过 self 等)和范围解析操作符来访问

3. 既然不能通过类访问那么它就和该类的所有实例没有关系了

那到底有啥用呢? 

<?php
class Test{
	public static $counter=0;
	function _construct(){
		self::$counter++;
	}
}

new Test();
new Test();
new Test();
echo '<p>'.Test::$counter.'</p>';
new Test();
echo '<p>'.Test::$counter.'</p>';

将方法声明为静态方法的作用:

不通过实例化即可访问这些方法,当然通过实例化的对象也能访问

由于静态方法不需要通过对象即可调用,所以 $this 在静态方法中不可用。
 

1. 声明类属性或方法为静态,就可以不实例化类而直接访问、共享其值。

2. 静态属性不可以由类的实例通过 -> 操作符来访问(但静态方法可以)。

3. 静态属性只能被初始化为文字或常量,不能使用表达式。所以可以把静态属性初始化为整数或数组,但不能初始化为另一个变量或函数返回值,也不能指向一个对象

发布了198 篇原创文章 · 获赞 82 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/weixin_38134491/article/details/103336785