PHP static引用的作用域

我们知道在PHP的一个类中引用父类的静态属性(或方法)的语法是:

parent::$var; // 引用父类的静态属性
parent::say(); // 引用父类的静态方法

引用当前类的静态属性语法是:

self::$var; // 引用当前类的静态属性
self::say(); // 引用当前类的静态方法

上面的parent、self关键字是静态引用的作用域,parent的作用域是父类,self的作用域是当前类,除了这两个,还有一个static关键字是全部作用域的:

static::$var; // 引用全部静态作用域的属性
static::say(); // 引用全部静态作用域的方法

看了下面这个脚本,相信你就会明白static关键字的作用:

<?php
class A {
    static $fruit = 'apple';

    public function say() {
        echo self::$fruit, '</br>'; // 输出apple
        echo static::$fruit, '</br>'; // 输出banana
    }
}

class B extends A {
    static $fruit = 'banana';
}

$obj = new B();
$obj->say();

因为在B类中,复写了A类中的$fruit静态属性,所以static::$fruit的输出值是banana,而不是A类中的apple。

更详细的信息可以参阅:http://php.net/manual/zh/language.oop5.late-static-bindings.php

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值