使用隐式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,例如。
答案 0 :(得分:3)
当我在大学做Java时,通常在setter中进行验证。但是,在web dev工作了一段时间之后,我注意到它通常不是一个好主意,因为你通常想要构造一批错误消息并返回给用户。因此,对象中的validate()
方法或返回错误集合的Service层的validateX()
方法更适合。
话虽如此,除了ValidateThis之外,如果您正在运行CF9,还有http://hyrule.riaforge.org/。
答案 1 :(得分:2)
就个人而言,我认为不应该在正在验证的对象内部进行验证。我更喜欢外部流程,例如ValidateThis http://www.validatethis.org/
这是一个非常强大且灵活的“框架”(缺少一个字),用于验证对象。它允许您验证属性是简单值,复杂值(结构,数组)和其他对象。