【发布时间】:2011-10-26 09:57:29
【问题描述】:
我想做这样的事情:
function readUser($aUser = loadDefaultUser()){
//doing read User
}
我发现它会向我显示错误,如何将函数返回作为默认值传递?谢谢你。
【问题讨论】:
我想做这样的事情:
function readUser($aUser = loadDefaultUser()){
//doing read User
}
我发现它会向我显示错误,如何将函数返回作为默认值传递?谢谢你。
【问题讨论】:
function readUser($aUser = NULL){
if ($aUser === NULL){
$aUser = loadDefaultUser();
}
//do your stuff
}
【讨论】:
was_passed_by_user,如果给定变量是用户传递的参数,它将返回true,默认情况下初始化为false,默认情况下为NULL包含函数没有此名称的参数。
我宁愿给这个参数一个Null 值,然后在函数体中调用loadDefaultUser()。像这样的:
function readUser($aUser = NULL){
if(is_null($aUser)){
$aUser = loadDefaultUser();
}
//...
}
【讨论】:
您可以在 loadDefaultUser() 函数中添加一个回调参数,当它完成时它会触发带有返回/结果的回调函数。这有点像 ajax-javascript 回调。
function loadDefaultUser ( $callback )
{
$result = true;
return $callback($result);
}
【讨论】:
是的,you can provide a default argument。但是,默认参数“必须是常量表达式,而不是(例如)变量、类成员或函数调用。”
您可以通过使用一些常量值作为默认值来伪造此行为,然后在调用函数时将其替换为函数调用的结果。
我们将使用NULL,因为这是一个非常典型的“无价值”值:
function readUser($aUser = NULL) {
if (is_null($aUser))
$aUser = loadDefaultUser();
// ... your code here
}
【讨论】:
if ($aUser === NULL),因为这样更快并且可以节省 PHP 调用(内置)函数is_null()。这并不重要,但可以“免费”让您的 PHP 应用程序更快。
NULL。
=== NULL 而不是is_null()?正如我所说,这并不重要,你仍然可以免费获得“提升”。那么为什么不使用它呢?能解释一下或者给个链接吗?好的,关于您的代码对称性,所以要么在 is_string()、is_int()、is_null() 或 $a = NULL; if ($a === NULL) … 中对称。不过,为什么(b)?
is_null具有更高的抽象性,因此更好。虽然在这里不太可能,但根据习惯,如果您使用这样的抽象函数,那么当所需的行为发生变化时,您将来会受到保护。