2016-03-16 50 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()”。 有没有最好的做法来处理这种情况?

编辑:我填充了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()); 
} 
+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()