2012-04-18 90 views
0

我刚刚在一个网站上看到了这个源代码,但我不知道它是什么意思,谁能告诉我它是什么?非常感谢。一个简单的php逻辑

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

回答

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行,但它更易于理解和维护。你应该编写这个最终版本的代码,并避免写任何类似原始的单行代码。

你可以自己看看:虽然你很难说出最初的单行事件(如此艰难以至于不得不提问这个问题),但很容易看出什么正在进行的最终版本:如果cache_list不为空,我们调用loadCachecache_list作为参数传递给它(否则,如果cache_list将为空,则可能无意义调用loadCache将空值传递给它作为参数)。

+0

感谢您的回答,这非常明确。谢谢Aurelien&NiftyDude&raheel shan。 – 2012-04-18 06:20:44

0

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

0

我想这是一个快捷方式:

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

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