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

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

function readUser($aUser = loadDefaultUser()){ //doing read User } 

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

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

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

Мы будем использовать 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 }