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

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

function readUser($aUser = loadDefaultUser()){

 //doing read User
}

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

Ответ 1

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

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

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

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

    // ... your code here
}

Ответ 2

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

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

Ответ 3

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

function loadDefaultUser ( $callback ) 
{
   $result = true;       
   return $callback($result);
}

Ответ 4

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

   //do your stuff
}