1
vibbow 2017-02-18 18:36:16 +08:00
感觉上 B1/B2 返回不同是 Late Static Bindings 的原因。
|
2
cloudyplain 2017-02-18 19:54:27 +08:00
A 的子类没有重定义父类的$instance 变量,因此 static::$instance 只返回父类中的变量,因为 A1 先调用了 getInstance ,同时由于后期绑定的原因, getInstance 总会返回 A1 的实例。 B 方法中 static 关键字和 A 中的是两个概念, A static variable exists only in a local function scope, but it does not lose its value when program execution leaves this scope 。见 http://php.net/manual/en/language.variables.scope.php
在下拙见,不正确之处还望纠正。 |
4
sperad OP @cloudyplain ,谢谢大神指点 12, 你的意思是 static 作用域的不同吧,我也想过,也能解释。但在 B1,B2 分别调用 getInstance 方法时候,与 A1,A2 分别静态使用静态属性$instance 的内部处理方式一样嘛?我这里不是很清楚,
|