Запутался в операторе возврата в определяемой пользователем функции - PullRequest
4 голосов
/ 13 сентября 2010

У меня мало вопросов относительно оператора возврата.

а) Обязательно ли определять оператор возврата в пользовательской функции?определить оператор возврата без каких-либо параметров?он вернет нулевое значение?

c) допустима ли следующая функция?

function admin_credential($password = 0, $email = 0) {
     if( $password != 0) {
         $password = sha1($password);
         $query = "UPDATE admins SET password = '$password'";
         $result = mysql_query($query);
         }
     if( $email != 0) {
         $query = "UPDATE admins SET email = '$email'";
         $result = mysql_query($query);            
         }
         return;
         }

Ответы [ 4 ]

3 голосов
/ 13 сентября 2010

a) обязательно ли определять оператор возврата в определенной пользователем функции .?

No.

b) все еще ли он действителен, еслия просто определить оператор возврата без каких-либо параметров?он вернет нулевое значение?

Да.

c) допустима ли следующая функция?

Да, но $resultбудет потеряно, потому что вы не вернете его.return не является действительно необходимым.

2 голосов
/ 13 сентября 2010

а) Обязательно ли указывать оператор возврата в определенной пользователем функции .?

Нет. Иногда вы пишете функции, которые ничего не возвращают вызываемой функции, скажем, функцию для печати многомерного массива красивым способом.

b) это все еще верно, если я просто определяю инструкцию возврата без какого-либо параметра? он вернет нулевое значение?

Да. Пропуск return аналогичен return без каких-либо параметров, и оба возвращают NULL.

в) допустима ли следующая функция?

Это синтаксически допустимо. Но было бы более значимым, если бы вы возвращали логическое значение, чтобы отметить успех / неудачу запроса. Чтобы вызывающий знал, прошло ли обновление БД нормально или нет.

EDIT:

"UPDATE admins SET password = '$password'"

В запросе отсутствует предложение WHERE. Таким образом, он эффективно обновил пароль всех пользователей в таблице admins.

2 голосов
/ 13 сентября 2010

а) вам не нужно возвращать значение в конце функции в PHP.Это примерно эквивалентно функции void в C.

b) значение return недопустимо, но это может сбить с толку других людей, просматривающих ваш код позже, так что это плохая идеяэто ваша стандартная практика.Попробуйте вместо этого вернуть NULL, что будет иметь тот же эффект.

c) Да, ваша функция использует допустимый синтаксис.

1 голос
/ 13 сентября 2010

Когда вы смотрите на таблицы PHP для аутентификации пользователя, есть много вещей, которые следует учитывать. Вы должны обдумать, как вы хотите хранить данные в ваших таблицах и как их получить. Это означает, что вам нужно учитывать, сколько пользователей будет иметь доступ и сколько типов пользователей. Если у вас есть несколько пользователей, таких как менее 10, я не рекомендую использовать аутентификацию пользователей базы данных.

На поставленные вами вопросы уже дан эффективный ответ, но я призываю вас попытаться избежать усложнения вашей системы множеством ненужных функций: будьте проще.

...