2013-01-18 30 views
0
static $searchQuery="nothing"; 

if ($searchQuery=="nothing") 
{ 
    if ($referral=="") 
    { 
     $referral=referrer(); 
    } 
    $searchQuery=getSearchQuery($referral); 
} 
return $searchQuery; 

基本上我需要初始化$ searchQuery的東西。我應該如何在PhP中改進這種延遲加載模式?

我可以用「」來初始化它,但$ searchQuery的值通常是合法的「」。

那麼我應該如何初始化它呢? 「」?零?空值?陣列()?什麼?

我還可以使用

static $result; 
if (isset($result)) 
{ 
    return $result; 
} 

,但我得到了警告,因爲$結果沒有定義。

+0

您可以爲初學者拋棄「靜態」。 –

+0

是什麼?當然,我必須使用靜態。 –

+0

這是爲什麼?你爲什麼認爲你需要靜態? –

回答

2

這取決於你,但你需要小心PHP的鬆散打字。我更喜歡NULL,並且我會將該代碼編寫爲:

static $searchQuery = NULL; 

if(is_null($searchQuery)) { 
    if(emtpy($referral)) { 
     $referral=referrer(); 
    } 
    $searchQuery=getSearchQuery($referral); 
} 
return $searchQuery; 
+0

是否等於0? 0是順便返回的可能值。 –

+0

@JimThio在PHP的通常'懶惰'比較中'NULL','0',''0''和''「''都等價於'false'。 'is_null()'是一個等價於'$ value === NULL'的嚴格比較,只有當值爲NULL時纔會返回true。 – Sammitch