![]() |
1
2
您遇到的概念称为“后期静态绑定”。在php 5.3.0之前,不支持这种方法。 如果运行的是5.3.0或更高版本,请更新getstatic()方法:
|
![]() |
2
1
其他的都是对的,因为变量在编译时不存在,所以您的代码是无法完成的。 这样做的方法通常是使用一个抽象类(在php5和更高版本中可用,看起来是这样)。 类A将是抽象类,并具有getStatic()函数。类B和类C将扩展A并为getstatic()函数定义。这样,当调用getstatic()时,您将得到子类定义的值,因为在a中没有定义。 这种方法的警告是,您不能实例化,因为它是抽象的。你总是需要做一个b或者c(或者其中的一个子类)。 您还可以在中创建一个setter,并让子类使用它来设置值(而不是“=”。这将允许您实例化一个,如果需要,它可以设置值。您可以将setter设置为私有的,这样就不能直接调用它,我不知道子类是否可以在PHP中使用私有函数。 |
![]() |
3
0
函数和变量的声明不匹配。 您需要将函数的声明移到b 或 将变量的声明移动到a。 |
![]() |
4
0
类B从类A继承属性,而不是反向继承。
为什么不使用
|
![]() |
5
0
必须将mystatic移到a中。方法getstatic在a中无法访问不存在于a中的变量。 |
![]() |
6
0
从 PHP manual :
因此,当您调用
解决方案是后期的静态绑定,但这仅在尚未发布的PHP5.3中可用。 |
![]() |
8
-1
然后用b::$mystatic… |