【发布时间】:2014-11-10 13:30:55
【问题描述】:
假设我们定义了一个函数,该函数接受一个包含错误消息的引用参数,但我们并不总是需要错误消息,所以我们允许省略该引用参数:
function isSpider($bug, &$errorMsg = null) {
if(gettype($bug) !== "object") {
$errorMsg = "An error occurred: bug must be an object";
return false;
}
return $bug->species === "spider";
}
当我们省略引用参数时,$errorMsg 只是一个局部变量吗?我尝试像上面的示例中那样分配给它,它没有产生带有E_ALL 的错误消息。您可以将默认值分配给一个没有引用的变量,这似乎很奇怪。这很有用,但我只是想确保我理解预期的行为。 PHP 文档对此很吝啬。
可选引用参数允许的两种用例:
// we want to print the error message
if(!isSpider($bug1, $errorMsg)) echo $errorMsg;
或:
// don't care about the error message
if(isSpider($bug)) doSomething();
【问题讨论】:
标签: php pass-by-reference default-parameters