gpt4 book ai didi

php - 验证应该在 Form 对象或模型中完成吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:00:17 24 4
gpt4 key购买 nike

这个问题主要针对PHP中的Zend,当然其他语言和框架肯定也适用,所以欢迎大家提意见。

我最近才开始使用 Zend 框架,虽然它并不完美,但我已经玩得很开心了。然而,让我发疯的一件事是,我看到的大多数使用 Zend 的人的例子都是 v alidation in special form objects , 而不是在模型中。我认为这是一种不好的做法,因为数据可以通过表单输入之外的其他方式进入系统,这意味着要么验证器必须弯曲和扭曲以验证其他输入,要么必须在第二个地方进行验证,并重复逻辑。

我在其他一些帖子和博客上找到了和我有同样感受的人,但是 Zend 的开发者做出这个选择是有原因的,其他人似乎没有问题地使用它,所以我想在这里从社区获得一些反馈。

正如我所说,这主要适用于 Zend,尽管我认为从整体上看这个问题很重要,而不是在 Zend 框架的范围内工作,因为 Zend 的设计让您可以尽可能多地使用,或尽可能少,如您所愿。

最佳答案

这是一个非 zend 特定的答案,但我认为该模型应该对其自身数据的有效性负责。如果是这种情况,则验证属于模型,但是这可能并不总是可以实现,并且可能需要在 View 中执行验证,但是我认为这应该是在模型中执行的验证的补充而不是替代

仅在 View 中进行验证的问题在于,在某些时候您可能需要另一个 View 来查看您的数据。您的网站可能会变得流行,并且客户要求使用基于 XML 的 API 来生成他们自己的 View 。然后您是否依靠客户来验证数据?

即使您不必提供 API,一些客户也可能需要完全不同的自定义 View 以保证页面的完全不同版本,您现在再次在重复的 View 中进行验证。

我认为理想的场景是让您的模型执行验证,但让验证结果可供 View 读取并再次呈现页面并显示验证结果。

如果您想立即向用户显示验证数据等,我认为让 View 进行验证是完全合理的,但数据有效性的最终决定应由模型决定。

关于php - 验证应该在 Form 对象或模型中完成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/659950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com