通过引用传递对象属性

时间:2014-12-04 02:33:59

标签: php error-handling

我有这个php函数来向数据库中添加一个对象,但它让我有些麻烦才能使它工作。我已经习惯了java的方式,所以我试着遵循相同的模式,并且我收到一条错误消息,上面写着"严格的标准:只有变量应该通过引用来传递" 。 这是代码:

public function saveUser(User $user){
    $this->connection = DaoFactory::openConnection();
    $this->query = $this->connection->prepare($this->SAVE_QUERY);

    $this->query->bindParam(':name', $user->getName());
    $this->query->bindParam(':lastName', $user->getLastName());
    $this->query->bindParam(':age', $user->getAge());
    $this->query->bindParam('gender', $user->getGender());
    $this->query->bindParam(':email', $user->getEmail());
    $this->query->bindParam(':password', $user->getPassword());

    $this->query->execute();
    $this->connection = null;

}

我已经搜索过了,我发现对象属性应该放在一个变量中以避免这个问题,但这样做会导致代码变得非常混乱和复杂。例如:

$name = $user->getName();
$this->query->bindParam(':name',$name);

还有其他方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

bindParam期望一个通过引用传递的变量,而是给它一个函数返回的值,它不能通过引用传递。因此,请使用其他API方法bindValue()来绑定您的值。

请参阅https://stackoverflow.com/a/14413428/476了解其中的差异。