У меня есть класс проверки, который я хотел бы использовать для проверки того, что все значения в моем приложении находятся в пределах допустимых ограничений.
Я передаю объект статической функции в пределах класса проверки, из другого класса (в данном случае пользователя)
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, поэтому я понимаю, почему значения не будут доступны, а не почему они доступны вне цикла, но не внутри него.
Кроме того, как лучше всего проводить проверку защищенных / частных объектов?
Любой совет / советы будут с благодарностью.
Спасибо.