在阅读了Stack上的一些帖子,以及在线推荐给我的一些资料后,MVC模式对解释非常开放,所以请不要回答另一个解释。谢谢!
我现在已经到了设计我自己的PHP MVC的末尾,并且有两种可能的方式来推进这些观点。
但首先,我的控制器目前非常笨,不包含任何类,只是从合适的模型调用公共方法,并呈现适当的视图。
根据需要包含视图,因此通过构造函数以及所有方法(包括删除/更新等),对象可以自然地使用它们。
我的第一个选择是在视图中使用类似的东西获取数据
foreach($object->fetchData() as $data)
然后循环结果。然而,有些人不同意这一点,并建议从视图中排除这些方法。相反,我建议将其分配给构造函数中的变量,然后在视图中使用此变量
//constructor
$fetched_data = $object->fetchData()
// view
foreach($featched_data as $data)
我不太喜欢这个,因为它接缝杂乱而且没必要。
我的所有关键方法都可供视图使用,这可能会被视为问题吗?
所以这就是问题所在。我是否保持原样,并在MODEL中创建用于渲染数据的新方法(如上所述)或者我可以在构造函数中创建一个类,将模型扩展到它中,保护模型中的关键函数,然后创建我的只读CONSTRCUTOR中的公共方法?
谢谢!
答案 0 :(得分:0)
我会在构造函数中创建一个类。扩展模型不仅是一种更安全的方法,而且还可以最小化视图中函数的调用。我假设您将拥有多个视图,每次在每个视图中访问构造函数数据都比调用方法函数容易得多。
您可以向控制器添加类,这些类将调用方法函数并将数据直接传递到视图中,而不是聚集构造函数或引导程序。