PHP new static($ variable)

Som*_*ser 9 php static

 $model = new static($variable);
Run Code Online (Sandbox Code Playgroud)

所有这些都在一个类中的方法内,我试图在技术上理解这段代码的作用.我在Google世界里跑来跑去.但找不到任何可以让我得到答案的东西.这只是另一种说法.

 $model = new static $variable;
Run Code Online (Sandbox Code Playgroud)

那又怎么样呢

 $model = new static;
Run Code Online (Sandbox Code Playgroud)

这是否意味着我正在初始化一个变量并将其值设置为null但是我只是坚持变量在运行该方法后不会丢失该值?

Ora*_*ill 9

static在这种情况下表示当前对象范围.它用于后期静态绑定.

通常这与使用相同self.它不同的地方是当你有一个对象层次结构时,在父级上定义对范围的引用,但是在子对象上调用.在这种情况下,self会引用父母范围,而static会引用孩子的范围

class A{
    function selfFactory(){
        return new self();
    }

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

class B extends A{
}


$b = new B();

$a1 = $b->selfFactory(); // a1 is an instance of A

$a2 = $b->staticFactory(); // a2 is an instance of B
Run Code Online (Sandbox Code Playgroud)

将self视为定义范围并将static视为当前对象范围是最容易的.


mmr*_*txs -2

关键字 new 用于创建已定义类的对象

$模型=新的静态($变量);

所以这里创建了一个模型对象,它是类 static 的实例