Я думаю, что предлагаемые здесь решения великолепны.Я просто хотел добавить свои два цента вместе с другим возможным решением.
На мой взгляд, предложенное вами решение работает довольно хорошо.Единственная проблема в том, что вы должны помнить , что $validation_result[0]
это статус, а $validation_result[1]
содержит сообщения.Это может быть хорошо с вами, но будет трудно поддерживать, если другие люди используют ваш код.По этой причине мне нравится решение Брэда Томаса о создании специализированного класса, который содержит сообщения и статус.Поскольку свойства названы, вам не нужно угадывать, как получить доступ к информации проверки.Кроме того, большинство хороших IDE будут автоматически заполняться при попытке доступа к их свойствам.
У меня есть альтернативное решение.Вместо включения логического true или false.Просто верните массив сообщений.Вызывающая сторона просто должна проверить, есть ли в возвращенном массиве ненулевое количество ошибок.Вот пример:
function get_errors($val) {
$errors = array();
if( rule_1_not_met ) $errors[] = 'Reason 1';
if( rule_2_not_met ) $errors[] = 'Reason 2';
return $errors;
}
Тогда вызывающая сторона будет использовать это так:
$val = $_GET['some_param'];
$validation_result = get_errors($val);
if (count($validation_result) > 0) $out .= implode('<br/>', $validation_result);