我目前正在使用模型、映射器和控制器开发一个小应用程序。
我的问题是(因为我没有找到任何匹配的答案),当我们遇到以下情况时,映射器如何与模型(&控制器)交互。
$user = new UserModel();
$user->setId('21');
$userMapper = new UserMapper($user);
$userMapper->retrieve();
这将尽可能好地工作,模型有一个ID,映射器可以使用该ID检索所需的用户(并将其映射回用户对象)。
我的问题是,如何包装这段代码,我的意思是,这段代码非常原始,显然不建议在控制器中使用。
我想把它缩短,但我不知道怎么缩短:
public function view($id)
{
$user->find($id);
$view->assign('user',$user);
}
它应该看起来更像:
public function view($id)
{
$mapper = $registry->getMapper('user');
$user = $mapper->find($id);
$view->assign('user',$user);
}
但这是更多的代码。
我应该包括
getMapper
父控制器类中的过程,因此我可以轻松访问
$this->_mapper
没有明确的呼叫?
问题是,我不想破坏映射器模式,因此模型不应该通过
$model->find()
但是我不希望有很多代码只是为了首先创建一个映射器,然后这样做等等。
我希望你能理解我一点,我自己已经足够困惑了,因为我对许多模式和映射/建模技术都是新手。