За последние 24 часа нас посетили 37125 программистов и 7806 роботов. Сейчас ищут 1814 программистов ...

Наследование ооп

Тема в разделе "PHP для новичков", создана пользователем Genchik, 31 окт 2023.

  1. Genchik

    Genchik Новичок

    С нами с:
    31 окт 2023
    Сообщения:
    4
    Симпатии:
    0
    Код (Text):
    1.  
    2. <?php
    3.  
    4. class Lesson {
    5.     private $title;
    6.     private $text;
    7.     private $homework;
    8.     function __construct($title, $text, $homework) {
    9.        $this->title = $title . $this->text = $text . $this->homework = $homework;
    10.     }
    11.     function setLess() {
    12.        return  $this->title . $this->text . $this->homework;
    13.     }
    14.     function getLess ($title , $text, $homework) {
    15.         $this->title = $title . $this->text = $text . $this->homework = $homework;
    16.     }
    17.     function getInfo () {
    18.         $inf =  $this->title . $this->text . $this->homework;
    19.         return $inf;
    20.     }
    21.  
    22. }
    23. class PaidLesson extends Lesson {
    24.     private $price;
    25.     function __construct($title, $text, $homework, $price) {
    26.         parent::__construct($title, $text, $homework);
    27.         $this->price= $price;
    28.     }
    29.     function setPaid() {
    30.         return $this->price;
    31.     }
    32.     function getPaid($price) {
    33.         $this->price = $price;
    34.     }
    35.     function getInfo() {
    36.         $inf = parent::getInfo() . $this->price;
    37.         return $inf;
    38.     }
    39. }
    40. $HomeWork = new PaidLesson(" Урок о наследовании", " Лол, кек, чебурек" , " спать", " 99.90");
    41. echo $HomeWork->getInfo();
    Вроде бы все работает, но я где-то намудрил и на выходе у меня дважды дублируется $text и трижды $homework. Подскажите где я ошибся, сам не понимаю.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    а кто вас такой чепухе учил?
    вы сами попробуйте объяснить что делает эта строка?
    скорее всего нужно было
    PHP:
    1. $this->title = $title ;
    2. $this->text = $text ;
    3. $this->homework = $homework;
    остальное тоже не блещет... обычно (по названию и по смыcлу) set - это устанавливает значение, а get - получает, у вас же наоборот все + опять неразбериха с многократным =

    адекватно делают обычно так:
    PHP:
    1. function setLess($title , $text, $homework) {
    2.    $this->title = $title;
    3.    $this->text = $text;
    4.    $this->homework = $homework;
    5. }
    6. function getLess () {
    7.   return ['title' => $title , 'text' => $text, 'homework' => $homework];
    8. }
    кароче вы должны понимать что вы делаете и зачем, а не слепо все подряд лепить
     
    Genchik нравится это.
  3. Genchik

    Genchik Новичок

    С нами с:
    31 окт 2023
    Сообщения:
    4
    Симпатии:
    0
    Спасибо за ответ