PHP 后期静态绑定

PHP 后期静态绑定

理解:
  1. 用于在继承范围内引用静态调用的类
  2. 使用关键字static来实现后期静态绑定
  3. 功能与用法同self 关键字基本一致,唯一的区别就是,self指向的是其所在的类,而static指向的是继承者
例子:
例子1:静态例子
<?php

class Father
{
    public static function call()
    {
        echo "class Father" . PHP_EOL;
    }

    public static function test()
    {
        self:: call();
        static::call();
    }
}

class Son extends Father
{
    public static function call()
    {
        echo "class Son" . PHP_EOL;
    }
}

Son:: test();
//输出
//class Father
//class Son
例子2:非静态例子
<?php

class  Father
{
    public function call()
    {
        echo "instance from Father" . PHP_EOL;
    }

    public function test()
    {
        self::call();
        static:: call();
    }
}

class  Son extends Father
{
    public function call()
    {
        echo "instance from Son" . PHP_EOL;
    }
}

$son = new Son();
$son->test();
//输出:
//instance from Father
//instance from B

例子3:
<?php

class Father
{
    public static function create()
    {
        $self   = new self();
        $static = new static();

        return [$self, $static];
    }
}

class Son extends Father
{
}

$arr = Son::create();
foreach ($arr as $value) {
    var_dump($value);
}

//输出
//object(Father)#1 (0) {}
//object(Son)#2 (0) {}

常见场景:
  1. laravel 框架中,我们根据数据表创建的 model 所继承的那个基础类Illuminate\Database\Eloquent\Model.php里面就使用了大量的后期静态绑定功能
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值