devastation_kvlt
@devastation_kvlt

Возможно ли изменить свойство класса?

Есть класс, который нельзя править
Class Test{
public q=5;
}


Можно ли после объявления класса изменить значение q=9, что-бы все новые объекты создавались с q=9?
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
profesor08
@profesor08 Куратор тега PHP
Вам следует определить эту переменную статичной.
class Test
{
  public static $p = 5;
  public static print()
  {
     echo self::$p;
  }
}

Test::$p = 9;

$obj = new Test();
$obj->print(); // 9


Либо сделать чуть иначе, но смотря как вам удобнее
class Test
{
  private static $_p = 5;

  public $p;

  public function __construct()
  {
    $this->p = self::$_p;
  }

  public function update($value)
  {
    $this->p = $value;
    self::$_p = $value;
  }

  public static print()
  {
     echo $this->p;
  }
}

$obj = new Test();
$obj->update(9);
$obj->print(); // 9
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Ну как вариант - сделать класс-наследник от Test, и в конструкторе класса-наследника переопределять значение q. Везде потом использовать наследника.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы