$model = new static($variable);
所有这些都在一个类中的方法内,我试图在技术上理解这段代码的作用.我在Google世界里跑来跑去.但找不到任何可以让我得到答案的东西.这只是另一种说法.
$model = new static $variable;
还怎么样呢
$model = new static;
这是否意味着我正在初始化变量并将其值设置为null但是我只是在运行方法后保持变量不丢失值?
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
将self视为定义范围并将static视为当前对象范围是最容易的.