codeigniter 最佳实践PHP MVC

t1qtbnec  于 11个月前  发布在  PHP
关注(0)|答案(2)|浏览(95)

我正在用CodeIgniter在PHP中创建一个日历应用程序。在主日历页面中,我的模型当前创建一个数组,每个索引都是当前月份的一天。这一天是一个数组,包含用户在这一天可能发生的任何事件。现在,我应该首先在控制器中构造日历数组,然后将其传递给模型,以便模型可以访问数据库并填充所有事件,或者我应该创建日历数组并在模型中填充事件ALL?

$month = array( 'blank', 'blank',  'day1' => array( event 1, event2), 'day2' => ... );

字符串

baubqpgj

baubqpgj1#

这是一个很难回答的问题,我不确定每个人都会这样做.但我认为应该考虑以下几点:

  • 如果你的Model的方法要从你的应用程序的多个部分使用 (比如说,已经调用它的控制器,一个批处理程序和一个SOAP Web服务接口),这可能意味着要从多个Controller方法调用,问题是:你希望数组是什么样的?
  • 如果每次都需要包含相同的东西 (“完整数组”),那么为了避免复制粘贴,您应该将代码放在Model中
  • 如果它只需要在一种情况下包含“完整的东西”,那么,你的“特殊代码”可以在Controller中--或者在另一个Model方法中,在这种特殊情况下,它将在Controller中被调用,并调用现有的方法来获取数据。
  • 另一种方法是在控制器和模型之间添加一层..
  • 如果只有当您正在谈论的代码被执行时,数组才被视为一个“整体”,那么,我认为将该代码放入Model中是有意义的
  • 如果该代码是某些业务逻辑规则的一部分,那么它应该在Model层中占有一席之地;另一方面,如果它只与表示相关,那么它应该在View中。
  • 如果Model方法名为“getData“,则它应该只返回包含“真实的”数据的数组,而不是包含“空”天的数组;另一方面,如果Model方法名为“getEventsByDay“,则让它返回每天的内容(即使是空的)也是有意义的
  • 您应该尝试为Model方法提供一致的接口:如果保存数据的方法使用某种数组,则从DB加载数据的方法应该返回相同类型的数组;我的意思是,类似$model->save($model->load())的方法应该可以工作

最后,没有“好的答案”:“这取决于”^^
我真的不知道在你的情况下我会怎么做;我想这有点取决于应用程序的其余部分.我会问自己的问题是“空的一天的概念对我的模型有意义吗,或者它只是一个演示的问题?”

omvjsjqw

omvjsjqw2#

我可能会设计它,使它可以工作“两种方式”。模型的输出应该是一个标准化的数组,可能沿着行:

array('2009-08-05' => array('event' => ..., ...), '2009-08-06' => array(...));

字符串
也就是说,只有纯数据。
默认情况下,它可以吐出当前月份,或者从现在到+1个月之间的所有内容。它还应该接受一个参数来改变默认行为。可以接受一个日期数组或一个范围。
我不知道为什么你的例子中的前两个条目是“blank”。如果你的数组已经代表了日历表上显示的一个月,那么这将违背MVC。这样的表示问题需要在视图中考虑。

相关问题