oop — Могу ли я изменить нестатические свойства класса в PHP перед его инициализацией?

Рассмотрим следующий код:

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?

(Да, я знаю, что изменение статические свойства возможны Мне любопытно нестатическая из них.)

0

Решение

Невозможно изменить значение свойства по умолчанию после создания класса. И я уверен, что рефлексия этого тоже не допустит.

Вот что вы можете сделать вместо этого:

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

Немного смущен тем, почему вы просто не передадите значение конструктору класса. Но у тебя могут быть свои причины.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]