我有一个验证类,我想用它来检查应用程序中的所有值是否在允许的约束范围内。
我将一个对象从另一个类(在本例中为 User)传递给验证类中的静态函数
function validate() {
$errors = Validation::validate($this);
}
在验证类中,我创建一个新对象,然后继续处理传递的参数对象的属性(或者至少这是我想要做的)。
function validate($object) {
$validation = new Validation();
print_r($object);
print_r('<br />');
foreach($object as $key => $val) {
print_r($val);
isset($val->maxlength) ? $validation->validateLengthNoMoreThan($val->value, $val->maxlength) : null;
isset($val->minlength) ? $validation->validateLengthAtLeast($val->value, $val->minlength) : null;
isset($val->required) && ($val->required == true) ? $validation->validateNotBlank($val->value) : null;
}
return $validation->errors;
}
我打印函数内的值纯粹是为了测试目的。我不明白的是为什么该对象在 foreach 循环之外打印得很好,但如果我尝试访问循环内的值,则不会显示任何内容。
这是 foreach 循环外部显示的内容:
User Object (
[username:protected] => Property Object ( [value] => aaa [maxlength] => 12 [minlength] => 3 [required] => 1 )
[firstname:protected] =Property Object ( [value] => aaa [maxlength] => 12 [minlength] => 3 [required] => 1 )
[lastname:protected] =Property Object ( [value] => aaa [maxlength] => 12 [minlength] => 3 [required] => 1 )
)
验证类不会扩展 User 类,因此我理解为什么这些值不可用,而不是为什么它们在循环外部可用但在循环内部不可用。
另外,对受保护/私有属性进行验证的最佳方法是什么?
任何建议/提示将不胜感激。
Thanks.