【发布时间】:2015-06-24 21:33:25
【问题描述】:
我被推进了一个现有的 CodeIgniter 项目,并且正在熟悉他们的 MVC 方法的正确约定。我坚持的一件事是关联模型和控制器。 CI 文档对此几乎没有提供任何指导,我不确定正确的方法是什么。我们的项目是一个由外部应用程序调用的 API,所以我不关心视图,只关心模型和控制器。
这是一个现成的例子,而不是一个实际的例子,但希望它能帮助我理解:假设我正在制作一个包含迷你游戏和虚拟商店的应用程序。玩家可以通过玩小游戏来赚取积分。他们可以在商店里用这些积分购买物品。他们还可以在商店中出售商品以赚取积分。应用程序应记录每笔积分交易。
在这种情况下,我的想法是:
- ShopModel - 与数据库交互以加载产品数据并保存用户购买的商品
- MiniGameModel - 与数据库交互以加载有关迷你游戏的数据并保存分数
PointsModel - 与数据库交互以将积分转入或转出玩家帐户(并在“日志”表中写入相应的日志条目)
ShopController - 利用 ShopModel 和 PointsModel
- MiniGameController - 利用 MiniGameModel 和 PointsModel
例如,用户告诉应用程序他们想在商店中搜索“武器”。该应用程序向控制器请求武器。商店控制器构建查询,商店模型执行查询并返回记录。控制器将记录格式化为 JSON 并将它们发送回应用程序。
用户告诉应用程序他们想购买盾牌。应用程序通知商店控制器。店主从店铺模型中查询价格,然后告诉积分模型减去积分,然后告诉店铺模型给玩家盾牌。最后,控制器通过 JSON 通知应用程序购买了盾牌。
这是一个可接受的结构,还是每个控制器都应该只有一个模型?如果每个控制器应该只有一个模型,我该如何避免复制粘贴处理这些点的代码?我这样做完全错了吗?
请不要纠结于数据库结构或类似的东西。这不是一个真实的例子。我只是想弄清楚如何组织类。
【问题讨论】:
-
你绝对是在正确的轨道上。保持逻辑段分开并保持 DRY。
-
您完美地创建了模型(每个用于单独的任务),您可以在一个控制器中使用多个模型,也可以在多个控制器中使用一个模型。
标签: php codeigniter model-view-controller