php的static延迟加载

<?php
abstract class Food
{
    private $cups;
    protected $apples;
    protected $water;

    function __construct(){
        $this->cups = static::getCups();//static 也可以调用其他static修饰的函数
        $this->apples = static::getApple();
        $this->water = $this->getWater();
    }

    static function create(){
        return new static();
    }

    static function getCups(){
        return ‘debault‘;
    }

    static function getApple(){
        return "apple";
    }

    protected function getWater(){
        return "water";
    }
}

class People extends Food
{
    static function getCups(){
        return "Please give me a big bottles";
    }

    static function getApple(){
        return "Please give me a big apple";
    }    
}

echo "<pre>";
$app = People::create();
var_dump($app);
var_dump($app::getCups());
echo "</pre>";
?>

在>=PHP5.3中,给类加入了关键词static,用于实现延迟静态绑定(late static binding)。

在抽象类里面实例化了这个类,调用了父类的方法,然后父类里面是return new static()
重而创建了一个父类对象

执行结果
我的PHP版本 PHP Version 5.3.28

object(People)#1 (3) {
["cups":"Food":private]=>
string(28) "Please give me a big bottles"
["apples":protected]=>
string(26) "Please give me a big apple"
["water":protected]=>
string(5) "water"
}
string(28) "Please give me a big bottles"

php的static延迟加载,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。