次のコードに基本的な問題があります。
<?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を2番目のパラメーターとしてデフォルト値を持つコンストラクターに渡すことはオプションではありません。
ご協力いただきありがとうございます。