Я хотел бы сделать что-то вроде этого:
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 }