考虑以下代码:
class MyClass
{
public $test = 'foo';
public function example()
{
return $this->test;
}
}
// What I'm trying to do
MyClass->test = 'bar';
$test = new MyClass();
echo $test->example(); // Should return `bar` instead of `foo`.
我要在初始化基类 之前对其进行修改。 这可以在PHP中完成吗?
(是的,我知道可以修改static properties。我很好奇非静态。)
答案 0 :(得分:1)
创建类后,无法更改属性的默认值。而且我很确定反射也不会允许它。
您可以改用以下方法:
class MyClass
{
public static $default_test = 'foo';
public $test;
public function __construct()
{
$this->test = self::$default_test;
}
public function example()
{
return $this->test;
}
}
MyClass::$default_test = 'bar';
$test = new MyClass();
echo $test->example();
基本上,您有一个保留默认值的静态属性,构造函数为其设置该属性的初始值。
不过,为什么不将值传递给类的构造函数有些困惑。但是您可能有理由。