![](/img/trans.png)
[英]What is the purpose of automatically generating getters and setters when the backing field is public
[英]What do we handle validation when using implicit setters and getters in CF9?
使用隐式setter和getter时如何处理验证? 我想象当使用显式getter和setter时,我们会做类似的事情:
public void function setFirstName() {
if (! len(arguments.firstName)) {
//throw some error/add an error to an error container
} else {
variables.firstName = arguments.firstName;
}
}
如果使用隐式的getter和setter,则可以在CFC本身中定义验证规则,例如:
/**
* @validate string
* @validateparams {minLength=2, maxLength=40}
*/
property String firstName;
我的问题是:
我是OOP的新手,我依靠CFWheels为我完成所有这些工作。 我想学习在没有框架的情况下如何处理此功能,或者例如,如果我使用的是Hibernate。
当我上大学时使用Java时,验证通常是在setter中完成的。 但是,在Web开发人员工作了一段时间后,我注意到这通常不是一个好主意,因为您通常希望构造一批错误消息并返回给用户。 因此, validate()
方法在所述对象或validateX()
在服务层的方法,它返回错误的集合会更适合。
话虽如此,如果您正在运行CF9,除了ValidateThis之外,还有http://hyrule.riaforge.org/ 。
就个人而言,我认为不应在正在验证的对象内部进行验证。 我更喜欢外部流程,例如ValidateThis http://www.validatethis.org/
这是用于验证对象的非常强大且灵活的“框架”(因为缺少一个更好的词)。 它允许您验证简单值,复杂值(结构,数组)和其他对象的属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.