繁体   English   中英

最佳实践PHP MVC问题

[英]Best Practice PHP MVC Question

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

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

这是一个棘手的问题,我不确定每个人都会以同样的方式做...但是,我认为这是应该考虑的因素:

  • 如果要在应用程序的多个部分(例如,已经调用它的控制器,批处理程序和SOAP Web服务接口)中使用Model的方法,则可能意味着要从多个Controller方法中调用该方法。是:您希望数组是什么样的?
    • 如果每次都需要始终包含相同的内容(“完整数组”) ,则为避免复制粘贴,应将代码放入模型中
    • 如果仅在一种情况下需要包含“完整内容”,则您的“特殊代码”可以在Controller中-或在另一个Model方法中,在这种特殊情况下,该方法将在Controller中调用,然后调用现有的获取数据。
    • 另一种方法是在Controller和Model之间添加一层...毕竟不是一个坏主意...
  • 如果仅当您所讨论的代码已执行时才将数组视为“整体”,那么我认为将代码放入模型是有意义的
  • 如果该代码是某些业务逻辑规则的一部分,则它应位于模型层中; 另一方面,如果它仅与表示有关,则其位置将在视图中。
  • 如果您的Model方法称为“ getData ”,则它仅应返回包含“真实”数据的数组,而不返回包含“空”天的数组; 另一方面,如果将其称为“ getEventsByDay ”,则有必要让它每天返回某些内容,即使是空的也是如此
  • 您应该为Model方法尝试一个连贯的接口:如果一个用于保存数据的接口采用某种数组,那么从数据库中加载数据的接口应该返回相同的数组; $model->save($model->load())应该可以工作,我的意思是

最后,没有“好答案”:“取决于” ^^

我真的不知道你该做些什么; 我想这有点取决于应用程序的其余部分……我要问自己的问题是:“空天的概念对我的模型有意义吗,还是仅仅是表达问题?”

我可能会对其进行设计,以便它可以“双向”运行。 模型的输出应为标准化数组,可能遵循以下原则:

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

即只是纯数据。

默认情况下,它可能会吐出当月或从现在到+1个月之间的所有时间。 虽然也应该考虑更改默认行为。 请选择日期数组或范围。

我不知道您的示例中为什么前两个条目为“空白”。 如果您的数组已经代表日历表上显示的一个月,则将与MVC不符。 这种表示问题将在视图中考虑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM