Могу ли я использовать функцию для возврата параметров по умолчанию в php? - PullRequest
2 голосов
/ 13 августа 2011

Я хотел бы сделать что-то вроде этого:

function readUser($aUser = loadDefaultUser()){

 //doing read User
}

Я обнаружил, что для меня будет отображаться ошибка, как я могу передать функцию return как значение по умолчанию?Спасибо.

Ответы [ 4 ]

5 голосов
/ 13 августа 2011

Я бы скорее дал значение Null для этого аргумента, а затем вызвал loadDefaultUser() в теле функции.Как то так:

function readUser($aUser = NULL){
    if(is_null($aUser)){
        $aUser = loadDefaultUser();
    }
    //...
}
1 голос
/ 13 августа 2011

Да, Вы можете указать аргумент по умолчанию . Однако аргумент по умолчанию «должен быть константным выражением, а не (например) переменной, членом класса или вызовом функции».

Вы можете подделать это поведение, используя некоторое постоянное значение по умолчанию, а затем заменить его на результаты вызова функции при вызове функции.

Мы будем использовать NULL, так как это довольно типичное значение "без значения":

function readUser($aUser = NULL) {
    if (is_null($aUser))
        $aUser = loadDefaultUser();

    // ... your code here
}
1 голос
/ 13 августа 2011

Вы можете добавить параметр обратного вызова в функцию loadDefaultUser (), когда она будет завершена, она вызовет функцию обратного вызова с возвратом / результатом.Это немного похоже на обратные вызовы ajax-javascript.

function loadDefaultUser ( $callback ) 
{
   $result = true;       
   return $callback($result);
}
0 голосов
/ 13 августа 2011
function readUser($aUser = NULL){
   if ($aUser === NULL){
        $aUser = loadDefaultUser();
   }

   //do your stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...