php – MVC架构中的数据和表单验证

前端之家收集整理的这篇文章主要介绍了php – MVC架构中的数据和表单验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用CodeIgniter开发了大多数Web应用程序,并且在将此数据发送到要使用的Model之前,始终采用内置Form Validation类验证控制器内部的表单数据的方法,例如将数据插入数据库.

但是,我一直听到“瘦的控制器,脂肪模型”系列 – 我想知道这些验证检查是否应该放在模型中.

当我想到使用这种方法时,有三件事让我感到震惊.

>如何在不从这些模型函数中返回看似丑陋的数组或对象的情况下向用户显示不同的错误消息?例如,注册帐户时重复的电子邮件.负责在模型中添加用户方法是否必须返回一个数组或对象来指示插入是否成功,以及任何错误消息?
>通过在模型中进行验证检查,检查从控制器提供给方法的变量(而不是POST数据),我将失去Form Validation类的使用,这个类在我的项目中非常有用.您是否建议我编写一个类或库,可以像CI库一样使用模仿表单验证类,但是对于提供的变量,而不仅限于POST数据?
>继续关注……因为在传递给模型之前,必须验证POST数据是否存在(isset($_ POST [‘myvar’])),其余的验证不应仅仅放在控制器也是?

任何建议,意见,意见将不胜感激!

你的原始问题来自于CodeIgniter对MVC的解释是非常可怕的.这个框架假装View只是一个模板,而Model只是一个ORM( which some say,should be classified as anti-pattern).这是完全错误的,并强制控制器内部的机器人业务和表示逻辑.

但是让我们离开.

MVC中的模型不是类或对象. Model是一个层,它包含所有业务逻辑.它实际上由来自众多类的实例组成.两个最普遍的组是域对象[2](这是人们通常称之为“模型”的东西)和负责信息存储和检索的对象 – 通常是DataMappers.模型层还包含独立组件(都是您自己的组件)和第三方)和更高级别的抽象 – 服务.

你有什么作为Validation类,可能被认为是一个独立的组件,可以由Domain对象用来执行验证,或者期望传递Domain对象进行验证..取决于你的实现.

在你的情况下,我会在服务层处理这个问题.这将为View类的实例提供有效的域对象,或者提供表示错误的对象.

有些阅读材料可能对以下内容感兴趣:

> GUI Architectures
> AnemicDomainModel
> Tell,Don’t ask

再说..我到底知道这一切……

猜你在找的PHP相关文章