Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
OOP设计-验证时的验证意味着点击数据库进行检查_Oop - Fatal编程技术网

OOP设计-验证时的验证意味着点击数据库进行检查

OOP设计-验证时的验证意味着点击数据库进行检查,oop,Oop,让我们假设我们讨论的是HTML投诉表单,其中一个字段是公司目录中的产品列表 我认为验证通常(总是?)在它自己的类中进行 我还收集到,使用网关类可以在内部处理所有数据库查询是一种很好的做法,因此当我从投诉表中保存投诉时,我不必担心数据库的详细信息 但是,需要访问数据库的验证又如何呢?例如,检查产品是否确实是我们拥有的产品(而不是有人篡改表单)。这只能通过在数据库中查找匹配项来完成。。。但是我的数据库被抽象在我的网关后面 我是否向网关添加验证逻辑?我是否创建验证器网关类?我是否用数据库逻辑授权我的验

让我们假设我们讨论的是HTML投诉表单,其中一个字段是公司目录中的产品列表

我认为验证通常(总是?)在它自己的类中进行

我还收集到,使用网关类可以在内部处理所有数据库查询是一种很好的做法,因此当我从投诉表中保存投诉时,我不必担心数据库的详细信息

但是,需要访问数据库的验证又如何呢?例如,检查产品是否确实是我们拥有的产品(而不是有人篡改表单)。这只能通过在数据库中查找匹配项来完成。。。但是我的数据库被抽象在我的网关后面

我是否向网关添加验证逻辑?我是否创建验证器网关类?我是否用数据库逻辑授权我的验证器

编辑-尝试澄清…

  • 客户点击投诉表链接
  • HTML投诉表单是用一个
    下拉列表构建的,其中包含我们虚构的公司目录中的X个产品
  • 客户填写表单并提交/Wiseguy修改HTML,使产品为“Schweddy Balls”并提交
  • 表单类验证简单的事情,如日期、所有必填字段都有数据、电子邮件地址等

  • 在步骤4,为了验证被投诉的产品是否合法,您必须点击数据库的product表,查看它是否仍然是有效的数据点。这种逻辑应该放在form类、gateway类中,还是放在其他地方?将它放在类的形式中会产生依赖关系,不是吗?

    通常最好只存储有效数据。因此,必须在服务器端编写一个验证器,以确保请求有效,并且只有有效数据才能放入数据库,作为一种优化,验证器通常在客户端进行验证(例如,在JavaScript中)这样,用户无需提交表单,也无需进行往返,就可以知道输入无效。作为数据库写入的一部分进行验证,可以轻松地执行后续读取,而无需进行任何检查


    我不知道什么对您来说是“有效”的,但您可能可以通过缓存保存大量数据库查找。也许您可以提供更多关于需求的信息?

    奇怪的是,验证不应该直接通过验证类完成。模型对象的类(在本例中可能是投诉)应该包括验证类,并且验证应该在其中完成。由于投诉可以访问所有投诉,验证方法可以使用投诉类的方法,或者根据需要调用另一个模型类

    当你说数据库的“网关”时,我相信你说的是on(ORM),它允许模型对象(如投诉)抽象地与数据库对话。ORM不应该知道应用程序的结构或细节,它应该只是一个抽象API,用于对象与数据库或其他后端通信

    当然,我的回答并不涵盖所有内容,因此欢迎进一步提问/澄清