我有一个基本的问题与以下代码:
<?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的insert方法需要UserInterface对象。所以我创建了一个:
<?php
$user = new User(1, "Chris");
$userMapper = new UserMapper();
$userMapper->insert($user);
?>
我的问题是,用户的id是插入对象后来自数据库的自动增量值。但是对象的构造函数强迫我定义一个id,因为没有id对象是不完整的。如何解决这个普遍问题?
将id作为第二个参数传递给具有默认值的构造函数是不可能的,因为在我的理解中,没有id的对象是不完整的。
谢谢你的帮助。
您可以通过null
:
$user = new User(null, "Chris");
没有检查$_id是否为有效的整数,并且对于null
,您知道该模型还没有有效的ID。