Я написал классPHP массив класса методы объекта проблема доступ
class User {
private $cars = array(); //store class Car 's object
public function getCars()
{
return $this->cars;
}
public function setCars($cars)
{
$this->cars = $cars;
}
}
class Car{
private $model;
public function getModel()
{
return $this->model;
}
public function setModel($model)
{
$this->model = $model;
}
}
$user = new User();
$cars = $user->getCars();
$cars[0]->getModel();
Когда я пытаюсь получить доступ к getModel() отчету PHP «Призыв к неопределенному методу StdClass :: getModel()». Есть ли наилучшая практика для решения такого случая?
Редактировать: Я заполнил геттер и сеттер. Фактически, он генерируется phpstorm.
Редактировать: Я попытался снова, и он хорошо работает с демо-кодом ниже. Исходный код слишком сложный для показа. Возможно, я вызван своим непониманием копирования по значению и ссылкой на массив.
Пожалуйста, игнорируйте этот вопрос. Прости.
class User {
private $cars = array(); //store class Car 's object
public function getCars()
{
return $this->cars;
}
public function setCars($cars)
{
$this->cars = $cars;
}
}
class Car{
private $model;
public function getModel()
{
return $this->model;
}
public function setModel($model)
{
$this->model = $model;
}
}
$user = new User();
$car = new Car();
$car->setModel("Ford");
$arr = $user->getCars();
array_push($arr,$car);
$user->setCars($arr);
foreach($user->getCars() as $car) {
var_dump($car->getModel());
}
показать свой полный код, в вашем коде нет '' getCars' или метод getModel'? –
Пожалуйста, покажите реальный код, вы не показываете, что настроено для 'User :: cars'. Согласно сообщению об ошибке это не объект «Car», поэтому вы, вероятно, ошибаетесь в коде при настройке свойства. Но без реального кода все, что мы можем сделать, это догадываться. – enricog