1. 双冒号的概述
在 PHP 中,双冒号(Double colon)也叫做范围解析操作符(Scope Resolution Operator),用于表示一个类、接口中的静态属性、静态方法、常量和重写的方法等。
1.1 静态属性和方法
双冒号运算符可以访问类中的静态属性和方法。
class Person
{
public static $name = 'Tom';
public static function getName()
{
return self::$name;
}
}
echo Person::$name; // 输出: Tom
echo Person::getName(); // 输出: Tom
在上述代码中,Person 类的静态变量 $name 和静态方法 getName 都使用了双冒号操作符。
1.2 常量
在定义常量时,也可以使用双冒号。
class Person
{
const GENDER_MALE = 'male';
const GENDER_FEMALE = 'female';
}
echo Person::GENDER_MALE; // 输出: male
echo Person::GENDER_FEMALE; // 输出: female
2. 双冒号的使用
2.1 访问静态方法和属性
在上面的例子中我们已经看到了如何使用双冒号操作符访问静态属性和方法。
2.2 重写方法
重写类的方法时,可以使用双冒号调用父类的方法或常量。
class A
{
const CONST_VALUE = 'A:CONST_VALUE';
public function method()
{
echo 'A::method';
}
}
class B extends A
{
const CONST_VALUE = 'B:CONST_VALUE';
public function method()
{
echo 'B::method';
parent::method(); // 调用父类的方法
echo self::CONST_VALUE; // 输出自己的常量
echo parent::CONST_VALUE; // 输出父类的常量
}
}
$obj = new B();
$obj->method(); // 输出: B::methodA::methodB:CONST_VALUEA:CONST_VALUE
2.3 接口常量
双冒号也可用于访问接口中定义的常量。
interface Fruit
{
const APPLE = 'apple';
const ORANGE = 'orange';
}
echo Fruit::APPLE; // 输出: apple
echo Fruit::ORANGE; // 输出: orange
3. 总结
在 PHP 中,双冒号是用来访问类、接口中的静态属性、静态方法、常量和重写的方法等的操作符。使用双冒号操作符可以使程序的运行更加高效,代码更加简洁。