Каков стандартный способ вернуть пользователю ошибку из функции? - PullRequest
0 голосов
/ 21 января 2011

Каков стандартный способ вернуть пользователю ошибку из функции?(адрес электронной почты недействителен, макс. символы превышены и т.стандартный метод сделать это?

Ответы [ 3 ]

0 голосов
/ 21 января 2011
<?php
// in your register function:
$registration_errors = array();
if (!$name) {
    $registration_errors['name'] = 'Name is required.';
}
// etc.
?>

<!-- in your phtml: -->
<?php if (array_key_exists('name', $registration_errors) echo $registration_errors['name'];?>
<label for="name">Name</label>
<input id="name" name="name" type="text" value="<?php echo $name; ?>" />
0 голосов
/ 21 января 2011

Есть множество способов сделать это, и вы можете даже считать некоторые из них "стандартными". Вы можете вернуть массив, содержащий код ошибки (как ответы выше), вы можете сохранить ошибку как свойство объекта (требующее вызова «register» как метод объекта), вы можете сохранить ошибку в глобальной переменной, или положить ошибку в зарегистрированном месте. Вы можете передать ссылку на переменную и установить значение переменной на ошибку. Вы можете изменить логику возврата, чтобы строка была ложной, а ноль - истинным значением. Вы можете поднять ошибку. Вы можете выбросить исключение.

Настоящая проблема здесь в том, что функция «регистр» должна выполнять какую-то функцию, и вы просите ее дезинфицировать входные данные на случай, если происходит что-то смешное. Так что, если вам действительно нужно очистить $ name и $ email, почему бы не выполнить эту проверку перед вызовом для регистрации? Вам понадобится какой-то путь ошибки независимо, и, возможно, несколько разных сообщений об ошибках в зависимости от ситуации. Когда вы, наконец, готовы к вызову, он должен завершиться успешно или неуспешно по своим собственным причинам, а не потому, что для бизнес-правил требуется непустой адрес электронной почты.

0 голосов
/ 21 января 2011

используйте что-то вроде этого

function register
{
.. 
else
{
return array('error' => $errorwhichyoufound);
}
....
}
$result = register();
if((array_key_exists('error', $result)))
{

}
else
{
}

Таким образом, вы можете даже проверить отдельные ошибки.

...