Могу ли я использовать функцию для возврата параметров по умолчанию в 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
}