@Leatington

Наследование классов в PHP — не выводится переменная?

<?php
  class Telegram {
    public $chat_id;

    function __construct($a)
    {
      $this->chat_id = $a;
    }
  }

  class DataBase extends Telegram {
    function __construct()
    {
      print('constructed');
    }
  }

  $a = new Telegram(3);
  $b = new DataBase();
  print($b->chat_id);
?>

Почему не выводится chat_id? Что я делаю не так?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
При создании экземпляра DatBase у вас не вызывается родительский конструктор и, соответственно, свойство chat_id остаётся неинициализированным.
Ответ написан
Комментировать
@HellWalk
class Telegram
{
    public $chat_id;

    public function __construct($a)
    {
        $this->chat_id = $a;
    }
}

class DataBase extends Telegram
{
    public function __construct($a)
    {
        parent::__construct($a);
        print('constructed');
    }
}

$a = new Telegram(3);
$b = new DataBase(123);
print($b->chat_id); // constructed123
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
01 дек. 2021, в 15:59
10000 руб./за проект
01 дек. 2021, в 15:52
1300 руб./за проект
01 дек. 2021, в 15:39
10000 руб./за проект