Предупреждение: создание объекта по умолчанию из пустого значения в строке 16

Я получаю сообщение об ошибке в моем 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();
$this->cars - это array, а не object. Вы должны сделать что-то вроде: $this->cars[$n_cars]['car_brand'] = $car_brand;
Erwin 23.04.2018 03:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
42
1

Ответы 1

Поле $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
}

Другие вопросы по теме