php mvc登录验证码,php – MVC – 用户输入验证:控制器,模型或两者

参见英文答案 >

validation in mvc php                                    2个

我知道这样的问题在stackoverflow上已被多次询问,但即使在读完之后,我仍然感到困惑.我希望通过演示示例问题来明确表单验证的处理方式.

假设我的网站上有一个表单,有一个人填写并随后提交的字段.该模型希望控制器正确地传递该值,以便在内部处理该值.模型通过函数getInput接收输入,该函数设置以下规则:

>输入必须是字符串类型.

>输入必须大于0且小于或等于100个字符.

>输入必须与电子邮件地址的模式匹配.

我想我应该在getInput中抛出异常,如果这些条件中的任何一个不符合;毕竟,控制器传递的值与模型设置的规则不匹配.

除了上述规则之外,控制器(至少我确定这适用于控制器)还必须在脚本继续执行其他三个规则之前验证输入值是否已设置在第一位.

现在我的问题是:这些(4)规则中哪一个要由控制器验证,哪些规则由模型验证?很明显,控制器知道模型请求的内容,以便它可以调整(如果没有,它可能会面临抛出异常的后果).另一方面,拥有多个控制器似乎是多余的,它们都使用模型及其getInput,验证相同类型的字符串,以便它匹配模型设置的规则.此外,如果控制器首先验证输入是否具有正确的长度 – 例如 – 并且模型在此之后立即执行完全相同的操作,一旦调用getInput,似乎会出现更多冗余.

在这个例子中,控制器和模型可以看作是一个伙伴关系,模型是一个脾气暴躁的完美主义者,他将验证他从控制器获得的输入,无论这些亲切的伙伴努力为他提供的行动如何带着他所有的欲望.但这种关系不是非常低效吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值