Изменить содержимое родительского класса, не меняя структуру методов дочернего класса, связанно с родительским. php oop

Я начинающий php-разработчик. У меня задание сделать ферму на ооп. Есть код, в котором дочерний класс изменяет свойства родительского. НО в методах дочернего класса явно указываются свойства родительского, что делает код не гибким. Я хочу сделать так, чтоб при добавлении новых свойств(животных) в родительский класс "Animals", мне не приходилось менять содержимое методов дочернего класса, ведь я обращаюсь через него к этим свойствам.

Например, в методе setCountAnimal(), я не ищу название животного в родительском классе, а через строку провожу проверку, зная, что такое животное есть...

class Animals {
    public $cow='cow';
    public $chiсken = 'chiсken';
    public $count_cow = 0;
    public $milk = 0;
    public $eggs = 0;
    public $count_chicken = 0;
      
}


class Farm extends Animals {

  
    public function setCountAnimal($count, $animal_name) {
        if($animal_name == 'cow'){
          
           $this->count_cow += $count;
            echo 'Добавлено '. $count.' ' .'коров.';
            
        }  
        elseif($animal_name == 'chicken'){
         
            $this->count_chicken += $count;
             echo 'Добавлено '. $count.' ' . 'куриц';
         } else {
            echo 'Такого животного нет на ферме';
            exit;
        }
          
    }

    public function setProduct($count, $animal_name, $day_of_week) {
        if($animal_name == 'cow') {
            $this->milk += $count; 
            echo 'В '.$day_of_week.' собрано '. $count. ' литров молока.';
        } 
        elseif($animal_name == 'chicken') {
            $this->eggs += $count; 
            echo 'В '.$day_of_week.' собрано '. $count. ' яиц.';
        } else {
            echo 'Такого животного нет на ферме';
            exit;
        }
    }

    public function getCountAnimals(){
       
        return "На ферме: ".$this->count_cow.' коров '. $this->count_chicken.' куриц ';
      }

      public function getCountProduct() {

        return "На ферме: ".$this->eggs. ' яиц '. $this->milk. ' литров молока ';
      }

   
}


Ответы (0 шт):