static 和 self的区别

self - 就是这个类,是代码段里面的这个类。
static - PHP 5.3加进来的只得是当前这个类,有点像$this的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类。


class A {
    public function create1()
    {
        return new self();
    }

    public function create2()
    {
        return new static();
    }
}

class B extends A {

}

$objA = new A();
echo get_class($objA->create1());
echo get_class($objA->create2());
echo "<br/>";
$obj = new B();
echo get_class($obj->create1());
echo get_class($obj->create2());

显示结果如下:
AA
AB

从上述代码就可以清晰的看出,new self 实例化的是代码区块所在的类,
new static 实例化的是在当前类(如果是子类,实例化的就是子类,即使方法是写在父类中);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值