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

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

function readUser($aUser = loadDefaultUser()){

 //doing read User
}

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

4 ответа

Решение

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

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

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

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

    // ... your code here
}

Я предпочел бы дать Null Значение этого аргумента, а затем вызвать loadDefaultUser() в теле функции. Что-то вроде этого:

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

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

function loadDefaultUser ( $callback ) 
{
   $result = true;       
   return $callback($result);
}
function readUser($aUser = NULL){
   if ($aUser === NULL){
        $aUser = loadDefaultUser();
   }

   //do your stuff
}
Другие вопросы по тегам