如何在php中访问子类的静态属性?

时间:2018-05-23 13:15:24

标签: php oop

<?php
class A{
    static $var;

    function test(){
      var_dump(self::$var);
    }
}

class B extends A{
    static $var = 'something';
}

$b = new B();
$b->test();
?>

为什么打印出null,我该如何解决这个问题?如果我没有将$ var设置为静态,但我需要它可以在不创建实例的情况下访问它。

1 个答案:

答案 0 :(得分:-1)

$b->test();打印null,因为它为null。当你这样做时:

class B extends A{
    static $var = 'something';
  }

您实际上并没有对$var课程中的A属性做任何事情。该属性是使用static关键字定义的,而per the docs,“声明为static的属性不能使用实例化的类对象访问(尽管静态方法可以)。”因此,您无法从B类继承它(或随后设置它)。

如果您希望test()方法输出任何有意义的内容,则需要静态设置,例如:

 A::$var = "something";