Рассмотрим следующий код:
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?
(Да, я знаю, что изменение статические свойства возможны Мне любопытно нестатическая из них.)
Невозможно изменить значение свойства по умолчанию после создания класса. И я уверен, что рефлексия этого тоже не допустит.
Вот что вы можете сделать вместо этого:
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();
По сути, у вас есть статическое свойство, которое содержит значение по умолчанию, и конструктор устанавливает для него начальное значение свойства.
Демо-версия: https://3v4l.org/djn3T
Немного смущен тем, почему вы просто не передадите значение конструктору класса. Но у тебя могут быть свои причины.
Других решений пока нет …