Неопределенная переменная в программе

Я пытаюсь написать для написания программы, но получаю некоторые ошибки.

Базовый класс автомобиля

  1. текущая скорость (свойство) – значение по умолчанию 0
  2. ускорение (метод)
  3. диск (метод)
  4. brand (property) – значение по умолчанию «unknown»
  5. max speed (свойство) – значение по умолчанию 0

Автомобильный класс Camaro

  1. Наследует базовый автомобиль
  2. brand (свойство) – значение по умолчанию «Chevy»
  3. максимальная скорость (свойство) – значение по умолчанию 200

Сценарий кода: В этом примере мне нужно создать экземпляр Camaro и сказать ему, чтобы он водил, я предполагаю, что он движется по прямой линии, и нет других факторов вождения. Автомобиль будет ускоряться, пока он не достигнет максимальной скорости. Требуется, чтобы диск вызывал ускорение. Требуется, чтобы ускорение увеличивало текущую скорость на 1. Как только Camaro достигнет максимальной скорости, он должен прекратить ускорение и печать, чтобы он достиг максимальной скорости автомобиля. Затем также следует остановить выполнение диска. *

Мой код ниже, чем я пытался.

<?php class Car extends CI_Controller { public function accelerate($_brand,$_max) { if($this->$_speed<=$_max) { $this->$_speed += 1; return true; } else { echo $this->_brand . 'Reached max speed'; } function drive() { $this->accelerate(); } } public $_speed = 0; public $_brand = 'unknown'; public $_max = 0; } class Camaro extends Car { public $_brand = 'Chevy'; public $_max = 100; } $car1 = new Camaro(); echo $car1 -> accelerate($_brand,$_max); ?> 

Solutions Collecting From Web of "Неопределенная переменная в программе"

Давайте избавимся от некоторых ужасов в коде и переформатируем его;)

1) вместо $this->$_speed use $this->_speed

2) поместить все объявления свойств наверху вашего класса

 class Car extends CI_Controller { public $_speed = 0; public $_brand = 'unknown'; public $_max = 0; public function accelerate($_brand,$_max) { if($this->_speed<=$_max) { $this->_speed += 1; return true; } else { echo $this->_brand . 'Reached max speed'; } } public function drive() { $this->accelerate(); } } class Camaro extends Car { public $_brand = 'Chevy'; public $_max = 100; } $car1 = new Camaro(); echo $car1 -> accelerate($car1->_brand, $car1->_max); ?> 

Просто отредактируйте приведенный ниже код:

1) в классе автомобилей:

 if($this->_speed<=$_max) { $this->_speed += 1; return true; } 

2) Демо

 $car1 = new Camaro(); echo $car1->accelerate($car1->_brand, $car1->_max); 

Наконец-то я получил решение. Спасибо за помощь. Это последняя программа, которая работала для меня.

 <?php class Car extends CI_Controller { public $_speed = 0; public $_brand = 'unknown'; public $_max = 0; public function accelerate($_brand,$_max) { for ($_speed = 0; $_speed <= $_max; $_speed++) { if ($this->_speed <$_max) { echo "<p>$_speed<p>"; } } echo $this->_brand . ' reached max speed.'; } public function drive() { $this->accelerate(); } } class Camaro extends Car { public $_brand = 'Chevy'; public $_max = 100; } $car1 = new Camaro(); echo $car1 -> accelerate($car1->_brand, $car1->_max); ?> //output 1 2 3 ... 100 Chevy reached max speed.