@AlexandrMa

Почему, у наследника свойство пустое?

Почему, у наследника свойство ID пустое?

class App{

  protected $data = [];

  public function __construct()
  {
    //какие то действия базового класса
  }

  //сюда пробрасываем все нужные переменные для наследников
  public function setData(array $data)
  {
    $this->data = $data;
  }

}


class ModulOne extends App
{
  public $id;

  public function __construct()
  {
    if(!empty($this->data['id'])){
      $this->id = $this->data['id'];
    }
  }

}


$a = new ModulOne();
$a->setData(['id' => 1]);

var_dump($a);
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 2
Конструктор класса вызывается единожды в момент его инициализации (new ...), следовательно никаких данных на этом этапе нет.

class App
{
    protected $data = [];

    public function setData(array $data)
    {
        $this->data = $data;
    }
}

class ModulOne extends App
{
    public $id;

    public function setData(array $data)
    {
        parent::setData($data);

        if (!empty($this->data['id'])) {
            $this->id = $this->data['id'];
        }
    }
}

$a = new ModulOne();
$a->setData(['id' => 1]);

var_dump($a);
Ответ написан
Stalker_RED
@Stalker_RED
Конструктор срабатывает раньше чем setData же.

https://ideone.com/pide0w
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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