<?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设置为静态,但我需要它可以在不创建实例的情况下访问它。
答案 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";