PHP类数组对象方法访问问题

时间:2016-03-16 04:41:01

标签: php oop

我写了一个课

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()”时。 是否有处理此类案件的最佳做法?

编辑:我填写了getter和setter。实际上,它是由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());
}

1 个答案:

答案 0 :(得分:0)

您尚未显示[Getter Setter ]代码。您需要使用以下内容创建一个:

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

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

同样适用于getModel()