我正在将 ZF 用于 MVC 应用程序,并且对我的代码应该如何构造感到非常困惑。
我有一个程序应用程序,它基本上是 1 个巨大的长文件,其中包含我希望我的应用程序执行的所有功能......比如:getUsername($id) 等。所以现在我在 ZF 中重新制作整个东西,因为我的当前的代码库不可行,垃圾且难以调试。
我是 MVC 的新手,对它应该如何布局、应该与什么对话等感到非常困惑。所以我知道关于模板的视图和需要瘦的控制器,并且你应该有胖模型,但我是混淆了逻辑需要在哪里。
我正在制作一个游戏,里面有一些常见的对象,比如......用户、村庄、军队、地图广场、资源等。
如果我完全从理论上考虑它,我只会说:1 个用户对象包含许多村庄,每个村庄属于一个方格并包含一支军队(其中包含许多单位)。
所以我认为我的模型不应该包含任何逻辑,只是一个用于检索数据的 get 和 set 函数列表,并且用于处理的逻辑、提问应该在 Mapper 内部完成......比如:
$villageMapper = new VillageMapper();
// Get village from database using mapper
$village = $villageMapper->getVillage($id, new Village());
当我想确定说两个村庄互相攻击的结果时,会在哪里做呢?我会做类似的事情:
$outcome = $villageMapper->determineAttackOutcome($village1, $village2);
或者我会说……一个里面有一点逻辑的战斗对象?
$battle = new Battle();
// Add participants
$battle->addAttacker($village1)->addDefender($village2);
$outcome = $battle->performAttack();
// Save village changes cause of battle
$villageMapper->save($battle->getAttacker());
$villageMapper->save($battle->getDefender());
我有一堆 DbTable php 文件,我猜所有的数据库代码都在里面......所以我的问题是:我的 Mapper 对象是否应该只用于诸如获取和保存到数据库之类的事情?
谢谢, 多姆