无法理解这个函数(getCache)在PHP中是如何工作的

时间:2014-05-12 21:25:25

标签: php

希望有人帮助我理解这一点:

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条件的计算结果为真。

2 个答案:

答案 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参数如何在函数签名中“定义”?这意味着,如果你没有在那里传递一个参数,那么它将默认为。

现在,在您的代码中,它被设置为3030是默认值。这没关系,这意味着它不依赖于默认值(因为它理论上可以改变,因此对于这个调用它总是30。)

现在,至于它没有被使用,这似乎更像是代码本身的设计缺陷,或者可能是复制/粘贴/ Derp™,其中函数签名是从另一个函数复制而不是编辑的。它没有显着差异。