2012-04-18 87 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',它加載它。 您必須檢查類或框架文檔以獲取有關這些操作的更多信息。