一个简单的PHP逻辑

时间:2012-04-18 05:37:57

标签: php

我刚刚在网站上看到了这个源代码,但我不知道这意味着什么,谁能告诉我它是什么?非常感谢你。

private function buildCache()
{
    !empty($this->cache_list) && $this->cache->loadCache($this->cache_list);
}

3 个答案:

答案 0 :(得分:4)

这是很难支持的错误代码的例子。

!empty($this->cache_list) && $this->cache->loadCache($this->cache_list);语句相当于$dummy = !empty($this->cache_list) && $this->cache->loadCache($this->cache_list);

存在惰性评估这样的事情,因此在A && BB只会评估A是否为真(否则A && B明显是假的,并且无需评估B)。基本上,$x = a() && b()

相同
$x = true;
if(!a()) {
    $x = false;
} else {
    $x = b();
}

因此,我们可以将原始陈述扩展为

$dummy = true;
if(empty($this->cache_list)) {
    $dummy = false;
} else {
    $dummy = $this->cache->loadCache($this->cache_list);
}

,记住我们不需要$dummy变量,与

相同
if(!empty($this->cache_list)) {
    $this->cache->loadCache($this->cache_list);
}

尽管此代码比原始代码长2行,但它更容易理解和保持。您应该编写类似于最终版本的代码,并避免编写类似于原始单行的任何内容。

你可以自己看到它:虽然你很难分辨出原来的单行内容是什么(你很难在SO上问问题),很容易看出是什么在最终版本中继续:如果cache_list不为空,我们正在调用loadCachecache_list作为参数传递给它(否则,如果cache_list将是为空,将loadCache作为参数传递给它的空值可能毫无意义。

答案 1 :(得分:0)

这意味着如果$this->cache_list不为空且$this->cache->loadCache()函数返回true

答案 2 :(得分:0)

我想这是以下的捷径:

private function buildCache()
{
    if( ! empty($this->cache_list)){
        $this->cache->loadCache($this->cache_list);
    }
}

如果有'cache_list',则会加载它。 您需要检查类或框架文档以获取有关这些操作的更多信息。

相关问题