2011-03-29 113 views
1

新手風格的問題,恐怕。我想知道是否有人會告訴我在以下情況下最佳做法是什麼。PHP:退出功能

它應該是...

function submitted_data() 
{ 
//Testing user data 
if(userdata != correctlyentered) 
{ 
    display_form(errors); 
} 
//Submit verified data to server 
} 

在這種情況下,什麼叫從submitted_datadisplay_form的時候,因爲此刻它繼續將數據提交到服務器時,我不就是正確的語法想要它。

還是應...

function submitted_data() 
{ 
//Testing user data 
if(userdata != correctlyentered) 
{ 
    display_form(errors); 
} 
else 
{ 
//Submit verified data to server 
} 
} 

或者它不會有什麼區別?

謝謝。

+0

是我或者是這兩個代碼示例完全一樣? – Codecraft 2011-03-29 14:48:41

+0

我認爲這需要更多的解釋 - 什麼是「提交數據到服務器」?這是php,這應該已經在服務器上_be_。 – oezi 2011-03-29 14:49:17

+0

他們不一樣,不。不過,我剛剛簡化了這個問題,所以也許這會有所幫助。謝謝。 – 2011-03-29 14:49:21

回答

2

你的第二個例子是有效的:

function submitted_data(); 
{ 
//Testing user data 
if(userdata != correctlyentered) 
{ 
    display_form(errors); 
} 
else 
{ 
//Submit verified data to server 
} 
} 

「退出」 功能,使用return。它本來可以做這樣的:

function submitted_data(); 
{ 
//Testing user data 
if(userdata != correctlyentered) 
{ 
    display_form(errors); 
    return; 
} 
//Submit verified data to server 
} 
+0

+1非常好。感謝您的直接答案。在我看來,「其他」版本比「返回」版本(?)更有效率。無論哪種方式,非常感謝。 – 2011-03-29 14:56:11

+1

@Django:他們可能非常相似。我更喜歡在錯誤處理中使用'return',因爲它清楚地說明'如果爲false:不要繼續'。總之,你不應該擔心性能,但在這裏可讀性(雖然這兩種方法都是可讀的,所以這是個人喜好的問題)。 – netcoder 2011-03-29 15:01:21

0

首先,不要在函數聲明後加分號。

無論如何,這完全取決於你想要做什麼。如果添加else(第二個塊),則代碼將僅在userdata != correctlyentered爲FALSE時運行。如果您不添加else(第一個塊),代碼將始終運行。

編輯: 要退出某個功能,可以使用return

if(userdata != correctlyentered) 
{ 
    display_form(errors); 
    return; 
} 
+0

糟糕。這只是僞代碼,但是,我刪除了分號。 – 2011-03-29 14:51:39

1

如果您不使用else語句,並且不在if中寫入return語句,則第一個示例將在每種情況下向服務器提交數據。

1

如果你想擺脫一個功能,你需要return

通常情況下,如果您因爲檢測到問題而退出某個功能 - 您將會return false,因此您可以編寫如果函數返回0 /錯誤結果會發生什麼情況的代碼。

如果您的功能按照您的意願工作,請使用return true,以便您可以編寫該功能完成所需功能時無需執行任何操作即可執行的操作。

當然,你可以返回其他東西 - 我個人儘量避免在函數中使用「回聲」,以便我可以選擇在不同情況下保留或輸出數據。

所以:

function myFunction() { 
    $result = "something happened"; 
    return $result; 
} 

echo myFunction(); 

將優選:

function myFunction() { 
    $result = "something happened"; 
    echo $result; 
    return true; 
} 

因爲我可以打電話給myFunction的只是爲了測試它,而無需顯示結果,或者我可以選擇顯示的結果。殺死兩隻鳥,使用一塊石頭。

0

我認爲在這種情況下,你應該選擇用最少的代碼嵌套了該變種{}

function submitted_data() 
{ 
//Testing user data 
if(userdata != correctlyentered) 
{ 
    display_form(errors); 
    return; 
} 

//Submit verified data to server 

}