Я получаю сообщение об ошибке в моем PHP-коде "Предупреждение: создание объекта по умолчанию из пустого значения в" Вот код:
class carshop
{
public $cars = array();
public $car_brand,$car_name, $car_modal,$car_price;
public function set_cars($car_brand,$car_name,$car_modal,$car_price)
{
$n_cars = count($this->cars);
в строке ошибки начинается здесь:
$this->cars[$n_cars]->car_brand = $car_brand;
$this->cars[$n_cars]->car_name = $car_name;
$this->cars[$n_cars]->car_modal = $car_modal;
$this->cars[$n_cars]->car_price = $car_price;
}
public function print_cars()
{
echo "<b>Car Stock: </b> We Have "
.count($this->cars). " Cars Infromation ! </br></br>";
for ($i=0; $i < count($this->cars) ; $i++) {
echo "<b><u>Car No: ".$i."</u></b> "
.$this->cars[$i]->car_brand. " ,"
.$this->cars[$i]->car_name. " ,"
.$this->cars[$i]->car_modal. " , \$"
.$this->cars[$i]->car_price;
echo "</br>";
}
}
}
объекты начинаются здесь:
$shop = new carshop();
$shop->set_cars("Honda","Civic","2017",2400000);
$shop->set_cars("Honda","City","2012",1200000);
$shop->set_cars("Honda","Accord","2015",1100000);
$shop->print_cars();






Поле $cars вашего класса carshop в виде массива:
public $cars = array();
Судя по коду, я предполагаю, что вы хотели, чтобы это был массив автомобилей. Ошибка произошла из-за того, что вы делали это:
$this->cars[$n_cars]->car_brand = $car_brand;
Но ценность $this->cars[$n_cars] - null.
Возможно, вы могли бы разделить свой класс - один для обработки бизнес-логики автомастерской, а другой для представления автомобиля. Например, следующее:
class Car
{
public $car_brand, $car_name, $car_modal, $car_price;
}
class CarShop
{
public $cars = array();
public function set_cars($car_brand,$car_name,$car_modal,$car_price)
{
$n_cars = count($this->cars);
$this->cars[$n_cars] = new Car(); // <-- Create a new Car object and add it to the cars array
$this->cars[$n_cars]->car_brand = $car_brand;
$this->cars[$n_cars]->car_name = $car_name;
$this->cars[$n_cars]->car_modal = $car_modal;
$this->cars[$n_cars]->car_price = $car_price;
}
// ... Rest of your CarShop class here
}
$this->cars- этоarray, а неobject. Вы должны сделать что-то вроде:$this->cars[$n_cars]['car_brand'] = $car_brand;