Могу ли я изменить нестатические свойства класса в PHP перед его инициализацией? - PullRequest
0 голосов
/ 24 декабря 2018

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

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?

(Да, я знаю, что возможно изменение статических свойств . Мне интересно узнать о нестатических .)

1 Ответ

0 голосов
/ 24 декабря 2018

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

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

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

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

...