2016-03-16 3 views
-1

Я написал класс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()); 
} 
+0

показать свой полный код, в вашем коде нет '' getCars' или метод getModel'? –

+0

Пожалуйста, покажите реальный код, вы не показываете, что настроено для 'User :: cars'. Согласно сообщению об ошибке это не объект «Car», поэтому вы, вероятно, ошибаетесь в коде при настройке свойства. Но без реального кода все, что мы можем сделать, это догадываться. – enricog

ответ

0

Вы не указали свой код [Getter Setter ]. Вам нужно создать что-то вроде:

public function setCars($val){ 
    $this->cars = $val; 
} 

public function getCars(){ 
    return $this->cars; 
} 

То же самое относится и к getModel()

Смежные вопросы