can';我不理解这个函数(getCache)在PHP中是如何工作的
希望有人能帮助我理解这一点:can';我不理解这个函数(getCache)在PHP中是如何工作的,php,Php,希望有人能帮助我理解这一点: function getCache($key, $timeout = 30) { $contents = false; if (MEMCACHE <> 0) { global $memcache; $contents = $memcache->get($key); } if (empty($contents)) { return false; }
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
}
函数getCache($key,$timeout=30){
$contents=false;
if(MEMCACHE 0){
全球$memcache;
$contents=$memcache->get($key);
}
if(空($contents)){
返回false;
}
返回$contents;
}
如果($onlineFrnds=getCache($userid,30)){
//做事
}
我并没有写这段代码,而是在我试图修改的代码中(为了理解)
我无法解释的是用30调用setCache,以及为什么用$timeout=30再次设置它。此外,函数中未使用$timeout。
如果超过30秒,则if条件的计算结果为true。
$timeout=30
是默认参数。这意味着如果不提供该参数,则该参数将使用值30
下面是一个小演示,向您展示它的工作原理:
function demo($timeout = 30) {
return $timeout;
}
echo demo(); // 30
echo demo(15); //15
看起来,
$timeout
用于使缓存过期,但从未使用过。您看到的是可选参数的定义
让我们看看,例如。。。啊,
字符串修剪(字符串$str[,字符串$character\u mask=“\t\n\r\0\x0B”])
您看到了吗,$character\u mask
参数是如何在函数签名中“定义”的?这意味着,如果不在那里传递参数,那么它将默认为该参数
现在,在您的代码中,它被设置为30
,而30
是默认值。这很好,这意味着它不依赖于默认值(因为理论上它可能会改变,所以对于这个调用,它总是30
)
现在,对于没有被使用的代码,这看起来更像是代码本身的设计缺陷,或者可能是复制/粘贴/Derp™, 其中,函数签名是从另一个函数复制的,然后不进行编辑。如果函数callOne没有调用另一个函数,那么$timeout=30是默认值,除非我们遗漏了什么。setCache()不调用getCache()这是一个缓存函数,机制很简单,它尝试获取缓存内容,如果没有缓存,我们将其设置为返回。抱歉,这是我的错误,setCache必须是getCache,我编辑了代码。这个问题似乎与主题无关,因为它可以在中找到。是的,当你得到一个命中时,为缓存中的东西设置一个新的TTL是很常见的。它在想“好吧,这首歌一定很重要,我要再保留几秒钟”——它只是没有实现。如果您希望在某些内容将在nnn秒内过期时返回false,那么它也很有用。