希望有人帮助我理解这一点:
function getCache($key, $timeout = 30) {
$contents = false;
if (MEMCACHE <> 0) {
global $memcache;
$contents = $memcache->get($key);
}
if (empty($contents)) {
return false;
}
return $contents;
}
if($onlineFrnds = getCache($userid, 30)){
//do stuff
}
我没有编写这段代码,而是在我试图修改的代码中(以便理解)。
我能解释的是setCache的调用是30以及为什么再次使用$ timeout = 30设置它。更多函数中没有使用$ timeout。 如果30秒通过,则if条件的计算结果为真。
答案 0 :(得分:7)
$timeout = 30
是默认参数。这意味着如果您不提供参数,则参数将使用值30
。
这是一个小演示,向您展示它是如何工作的:
function demo($timeout = 30) {
return $timeout;
}
echo demo(); // 30
echo demo(15); //15
看起来$timeout
本来是用来使缓存失效但从未使用过。
答案 1 :(得分:2)
您看到的是可选参数的定义。
让我们看看,例如......啊,here we go (http://php.net/trim)
string trim(string $ str [,string $ character_mask =“\ t \ n \ r \ n \ 0 \ x0B”])
您是否在那里看到,$character_mask
参数如何在函数签名中“定义”?这意味着,如果你没有在那里传递一个参数,那么它将默认为。
现在,在您的代码中,它被设置为30
,30
是默认值。这没关系,这意味着它不依赖于默认值(因为它理论上可以改变,因此对于这个调用它总是30
。)
现在,至于它没有被使用,这似乎更像是代码本身的设计缺陷,或者可能是复制/粘贴/ Derp™,其中函数签名是从另一个函数复制而不是编辑的。它没有显着差异。