我对以下代码有一个基本问题:
<?php
interface UserInterface
{
public function getId();
public function getName();
}
class User implements UserInterface
{
private $_id;
private $_name;
public function __construct($id, $name)
{
$this->_id = $id;
$this->_name = $name;
}
public function getId()
{
return $this->_id;
}
public function getName()
{
return $this->_name;
}
}
class UserMapper
{
public function insert(UserInterface $user)
{
... insertion code
}
}
?>
UserMapper 的插入方法需要一个 UserInterface 对象。所以我创建了一个:
<?php
$user = new User(1, "Chris");
$userMapper = new UserMapper();
$userMapper->insert($user);
?>
我的问题是,用户的 id 是插入对象后来自数据库的自动增量值。但是对象的构造函数迫使我定义一个 id,因为没有 id 的对象是不完整的。如何解决这个普遍问题?
将 id 作为第二个参数传递给带有默认值的构造函数不是一个选项,因为在我的理解中,如果没有 id,对象将是不完整的。
谢谢你的帮助。