我来自java背景,最近在PHP中测试了一些OOP方法。我发现父类允许使用Child类属性。下面的代码描述了我想说的内容。
<?php
class ParentClass {
public static function test() {
echo "hello world ". implode(',', static::$prop);
}
}
class ChildClass extends ParentClass {
public static $prop = ['a' , 'b'];
}
ChildClass::test();
?>
在上面的代码中,ParentClass使用函数test()
中的$ prop变量。这只是输出而没有错误。但是,Java中不允许这样做。这种方法在PHP中背后的原因是什么?
答案 0 :(得分:2)
Java没有Late static bindings的概念:
“后期绑定”来自于static ::不会使用定义方法的类来解析,而是使用运行时信息来计算。
如果您使用self::
,您将拥有Java所知的行为。但是static::
在运行时解析。