这个问题主要针对PHP中的Zend,尽管它当然也适用于其他语言和框架,所以我欢迎大家的意见。
我最近才开始使用 Zend 框架,虽然它并不完美,但我用它玩得很开心。然而,让我发疯的一件事是,我看到的大多数使用 Zend 的人的例子都是特殊形式对象的验证 http://framework.zend.com/manual/en/zend.form.advanced.html,而不是在模型中。我认为这是不好的做法,因为数据可以通过表单输入之外的其他方式进入系统,这意味着验证器必须弯曲和扭曲才能验证其他输入,或者验证必须在第二个地方完成,并且逻辑重复。
我发现了一些其他帖子和博客,其中有人和我有同样的感觉,但是 Zend 的开发人员做出这个选择是有原因的,而其他人似乎使用它没有问题,所以我想得到一些反馈来自这里的社区。
正如我所说,这主要适用于 Zend,尽管我认为从整体上看待问题很重要,而不是在 Zend 框架的范围内工作,因为 Zend 的设计目的是让您可以使用尽可能多的内容,也可以使用尽可能少的内容,如你所愿。
这是一个非 zend 特定的答案,但我认为模型应该对其自身数据的有效性负责。如果是这种情况,那么验证属于模型中,但是这可能并不总是可以实现,并且可能有必要在视图中执行验证,但是我认为这应该是在模型中执行的验证之外的补充,而不是替代为了它。
仅在视图中进行验证的问题是,在某些时候您可能需要对数据进行另一个视图。您的网站可能会变得流行,并且客户会要求基于 XML 的 API 来生成他们自己的视图。那么您是否依赖客户来验证数据?
即使您不必提供 API,一些客户也可能需要足够不同的自定义视图,以保证页面版本完全不同,现在您再次在重复的视图中进行验证。
我认为理想的情况是让您的模型进行验证,但使验证结果可供视图读取并再次渲染页面并显示验证结果。
我认为,如果您想立即将验证数据显示给用户等,那么让视图进行验证是完全合理的,但数据有效性的最终决定应由模型决定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)