Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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,我是OOP(和PHP)的新手,我正在努力寻找最佳实践,或者至少是验证用户输入的常用方法 目前,我正在对象的属性设置器中执行此操作,尽管我认为这是业务逻辑的最佳位置,但将输入清理代码放在那里感觉有点奇怪(例如,从ID字段中剥离所有非数字字符) 虽然我可以将这种类型的输入清理放到前端脚本中,但清理代码可以特定于该属性,所以这是我的反参数,它应该在对象setter中 困惑。。。正在寻找一些建议。正在“验证”setter的参数,对无效参数抛出异常听起来很合理 “消毒”或以其他方式符合方法前提条件应由调用

我是OOP(和PHP)的新手,我正在努力寻找最佳实践,或者至少是验证用户输入的常用方法

目前,我正在对象的属性设置器中执行此操作,尽管我认为这是业务逻辑的最佳位置,但将输入清理代码放在那里感觉有点奇怪(例如,从ID字段中剥离所有非数字字符)

虽然我可以将这种类型的输入清理放到前端脚本中,但清理代码可以特定于该属性,所以这是我的反参数,它应该在对象setter中


困惑。。。正在寻找一些建议。

正在“验证”setter的参数,对无效参数抛出异常听起来很合理

“消毒”或以其他方式符合方法前提条件应由调用方负责

更改用户输入通常不是一个好主意。让用户知道他们必须输入什么并告知他们错误是一种更为实用的方法


验证通常需要在多个地方进行,验证库将为您提供一个模型,以便重用验证逻辑。

方法应执行单个任务。setter应该“设置”数据。如果您想在某个位置验证数据,最好在保存数据之前将其作为一个步骤。好的,但这不会使对象处于无效状态吗?也就是说,您可以跳过验证步骤?如果您将验证步骤作为保存过程的一部分强制执行,则不会。谢谢,在您的回答和Robbie的上述内容之间,这听起来是一种更好的方法。