作爲一個系統管理員,我偶爾會做一些簡單的臨時編程。我一直在努力學習,所以一般來說,下面的代碼中有什麼會跳出來,因爲你是不好的練習還是不必要的?避免重複的代碼(PHP)
具體來說,最後3條if語句感覺就像我在不必要地複製代碼。有沒有什麼辦法可以進一步縮短它,而不會過度複雜?
<?php
define('TAKEN', 'Match: One');
define('AVAIL', 'Match: No Matches');
define('DATAMINE', 'Data mining count exceeded');
$ch = curl_init("http://co.za/cgi-bin/whois.sh?Domain=example");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
function search_whois($findit) {
global $output;
if (strpos($output, $findit) === false)
return false;
if (is_int(strpos($output, $findit)))
return true;
}
if (search_whois(TAKEN))
echo "Domain is taken.\n";
if (search_whois(AVAIL))
echo "Domain is available.\n";
if (search_whois(DATAMINE))
echo "Blocked for datamining, try again later.\n";
// var_dump($output);
?>
我喜歡看到開發商居然想提高自己的代碼,並希望做正確的事情。我會給你一個+1! 由於週五下午很晚,我可能不是現在驗證某人代碼的合適人選。但是,我看不出有什麼明顯的錯誤。如果最後三個if是互斥的,你可以使用if-else來代替,但這是挑剔的。 – kskjon 2010-10-15 13:05:58
如上面評論中提到的那樣,所有3個IF將運行,如果這是想要的,那麼你的代碼是好的,如果你想在每個if後結束/退出,或者只允許其中一個運行,那麼使用if/elseif /別的等等...... – 2010-10-15 13:07:41
我唯一可能做的不同是讓一個類而不是簡單地使用一個函數,所以你不必使用'global $ output'。除此之外,我認爲你很穩固。 – tplaner 2010-10-15 13:15:00