OOP设计-验证时的验证意味着点击数据库进行检查
让我们假设我们讨论的是HTML投诉表单,其中一个字段是公司目录中的产品列表 我认为验证通常(总是?)在它自己的类中进行 我还收集到,使用网关类可以在内部处理所有数据库查询是一种很好的做法,因此当我从投诉表中保存投诉时,我不必担心数据库的详细信息 但是,需要访问数据库的验证又如何呢?例如,检查产品是否确实是我们拥有的产品(而不是有人篡改表单)。这只能通过在数据库中查找匹配项来完成。。。但是我的数据库被抽象在我的网关后面 我是否向网关添加验证逻辑?我是否创建验证器网关类?我是否用数据库逻辑授权我的验证器 编辑-尝试澄清…OOP设计-验证时的验证意味着点击数据库进行检查,oop,Oop,让我们假设我们讨论的是HTML投诉表单,其中一个字段是公司目录中的产品列表 我认为验证通常(总是?)在它自己的类中进行 我还收集到,使用网关类可以在内部处理所有数据库查询是一种很好的做法,因此当我从投诉表中保存投诉时,我不必担心数据库的详细信息 但是,需要访问数据库的验证又如何呢?例如,检查产品是否确实是我们拥有的产品(而不是有人篡改表单)。这只能通过在数据库中查找匹配项来完成。。。但是我的数据库被抽象在我的网关后面 我是否向网关添加验证逻辑?我是否创建验证器网关类?我是否用数据库逻辑授权我的验
下拉列表构建的,其中包含我们虚构的公司目录中的X个产品在步骤4,为了验证被投诉的产品是否合法,您必须点击数据库的product表,查看它是否仍然是有效的数据点。这种逻辑应该放在form类、gateway类中,还是放在其他地方?将它放在类的形式中会产生依赖关系,不是吗?通常最好只存储有效数据。因此,必须在服务器端编写一个验证器,以确保请求有效,并且只有有效数据才能放入数据库,作为一种优化,验证器通常在客户端进行验证(例如,在JavaScript中)这样,用户无需提交表单,也无需进行往返,就可以知道输入无效。作为数据库写入的一部分进行验证,可以轻松地执行后续读取,而无需进行任何检查
我不知道什么对您来说是“有效”的,但您可能可以通过缓存保存大量数据库查找。也许您可以提供更多关于需求的信息?奇怪的是,验证不应该直接通过验证类完成。模型对象的类(在本例中可能是投诉)应该包括验证类,并且验证应该在其中完成。由于投诉可以访问所有投诉,验证方法可以使用投诉类的方法,或者根据需要调用另一个模型类 当你说数据库的“网关”时,我相信你说的是on(ORM),它允许模型对象(如投诉)抽象地与数据库对话。ORM不应该知道应用程序的结构或细节,它应该只是一个抽象API,用于对象与数据库或其他后端通信 当然,我的回答并不涵盖所有内容,因此欢迎进一步提问/澄清