7.6 范围解析操作符

范围解析操作符 :: 双冒号,可以用来访问类的静态属性和静态方法以及常量。

在类的外部使用 双冒号

class Foobar{
    static $hello = 'world';
}
// 输出 world
echo Foobar::$hello;

在类的内部使用 双冒号

// 类
class Foobar{
    static $hello = 'world';
    public function byStatic(){
        echo static::$hello;
    }
    public function bySelf(){
        echo self::$hello;
    }
    public function byThis(){
        echo $this::$hello;
    }
}
// 实例化
$foobar = new Foobar();
// 输出 world
$foobar->byStatic();
// 输出 world
$foobar->bySelf();
// 输出 world
$foobar->byThis();

调用父类的方法

// 父类
class Foo{
    public function __construct(){
        echo 'Foo::__construct';
    }
}
// 子类
class Bar extends Foo{
    public function __construct(){
        // 调用父类的方法
        parent::__construct();
        echo 'Bar::__construct';
    }
}

综合例子:

// 父类
class Foo{
    public static function three(){
        echo "a";
    }
}
// 子类
class Bar extends Foo{
    static $one = '1';
    const TWO = 2;
    public static function three(){
        // 调用父类的方法
        parent::three();
        echo 'b';
    }
}

// 静态方法
Bar::three();
// 静态属性
echo Bar::$one;
// 常量
echo Bar::TWO;

// 最终输出:ab12

你可能感兴趣的:(7.6 范围解析操作符)