具体来说,例如,重构代码以在模型类中使用的最佳方法是什么?
答案 0 :(得分:1)
在MVC模式中,模型应仅操纵存储在数据库中的数据以及与之相关的所有行为。所以:
现在,我通常应用的重构过程是:
这个过程对任何其他层有一些区别:
一个真实的例子:你有一个查询,它将检查具有给定'name'字段值的特定记录的存在,并且你想要全部使用它,然后:
最后,构建静态方法。
public static function countUsername($ username) { $ c = new Criteria(); $ C->添加(ApplicationUserPeer :: NAME,$名称,标准:: EQUAL); return ApplicationUserPeer :: doCount($ c); }
现在你有了你的函数来替换旧逻辑以使用新方法。假设您需要检查一个名称是否可供尝试注册的新用户使用。在某些操作中,您应该有一段代码如下:
public function executeCreateUser(sfWebRequest $request)
{
[...]
$c = new Criteria();
$c->add(ApplicationUserPeer::NAME,$request->getParameter('username'),Criteria::EQUAL);
;
if(ApplicationUserPeer::doCount($c) == 0)
{
//Then do some stuff that saves
}
[...]
}
使用您的功能后,您的代码可能如下所示:
public function executeCreateUser(sfWebRequest $request)
{
[...]
if(ApplicationUserPeer::countUsername($request->getParameter('username')) == 0)
{
//Then do some stuff that saves
}
[...]
}
这就是行动的过程,请记住,你总能进行更多的重构。例如,如果您考虑我为此示例选择的参数及其与功能的关系,您还可以添加“CriteriaMethodParameter”,其默认值为Equal,但如果您现在需要所有带字母A的用户名,则可以设置CriteriaMethodParameter,只需更改参数即可随时随地使用。