Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MVC[Zend Framework]:在何处应用过滤和验证_Php_Model View Controller_Zend Framework - Fatal编程技术网

Php MVC[Zend Framework]:在何处应用过滤和验证

Php MVC[Zend Framework]:在何处应用过滤和验证,php,model-view-controller,zend-framework,Php,Model View Controller,Zend Framework,我有(我希望)一个非常简单的问题要问MVC结构专家: 在哪里应用输入筛选和验证?控制器还是模型 我已经阅读了很多关于过滤用户输入的教程和手册,但没有注意到很多关于它应该应用于何处的讨论。当使用表单时,它很简单,实际上几乎所有的事情都是由Zend_表单通过Zend_过滤器和Zend_验证完成的 但是,当我必须从用户输入中筛选单个值并将其传递给模型时,最好的做法是什么,在将其传递给模型或模型本身之前进行清理 让我们假设我正在创建一个其他人也会使用的模型,它正在文件系统上做一些重要的工作。我是否100

我有(我希望)一个非常简单的问题要问MVC结构专家:

在哪里应用输入筛选和验证?控制器还是模型

我已经阅读了很多关于过滤用户输入的教程和手册,但没有注意到很多关于它应该应用于何处的讨论。当使用表单时,它很简单,实际上几乎所有的事情都是由Zend_表单通过Zend_过滤器和Zend_验证完成的

但是,当我必须从用户输入中筛选单个值并将其传递给模型时,最好的做法是什么,在将其传递给模型或模型本身之前进行清理

让我们假设我正在创建一个其他人也会使用的模型,它正在文件系统上做一些重要的工作。我是否100%确定其他人在将参数传递给模型之前会正确准备参数?我不是,所以最好是模型本身的清洁参数

但这只是我的想法,正如我之前所说的,我想听听你的想法,就在专业大师那里;)


天气真好。

我想在控制器里说。我的理解是,模型的构建应该假设它们被提供了有效的数据来处理(但如果没有,则应采取合理的预防措施,例如使用准备好的语句来访问数据库),并将数据的实际验证留给外部代理,在这种情况下是控制器

这取决于你是否提前知道你将要进行的验证类型

如果它是可以表示为正则表达式的东西,请将其留在控制器中,否则我认为模型应该是它的位置

示例。

您必须验证电子邮件地址:controller,以便可以向模型传递一些经过消毒的输入,并且只需处理实际的处理

您必须检查文件系统中是否存在路径:控制器将负责查看它是否是构造良好的路径;该模型将检查它是否确实存在于所讨论的文件系统中


您必须检查用户提供的字符串$x是否可以生成存储在某处的哈希$y:model

通常在控制器中执行此操作。模型应该处理合法的、可用的数据。

不过,正如我们所说的准备好的语句,它只不过是模型内部的清理。或者,如果我们说我们过滤两次——一次在控制器中编写自己的代码,第二次在模型中,以确保没有其他人犯可能导致系统崩溃的错误。双重安全还不错,我只是不知道这是否明智。哦,当涉及到网络应用时,你再小心也不为过。:)