2010-08-30 65 views
8

通常情況下,我會寫像這樣一個功能:PHP的echo函數的返回值VS回聲內功能

function alertClass($field,$full=false){ 
global $formErrors; 
$html = $full ? ' class="alert"' : ' alert'; 
if (!empty($formErrors[$field])) return $html; 
} 

,然後我想要的HTML顯示,我會像呼應的函數的返回值所以:

echo alertClass('somefield') 

但今天我在想爲什麼不只是把回聲放在函數中而不是使用它的返回值? 因此,而不是「返回$ html」它將是「echo $ html」... 是否有一種優勢,或其他方式?

回答

0

如果你沒有使用任何地方的返回值,那麼直接echo ing是比較好的。

6

使用echo預存使用該函數以編程方式構建一些HTML以便稍後輸出或進一步處理。

如果你的情況沒有任何缺點返回HTML,我會繼續這樣做。它增加了靈活性。

2

這取決於功能的目的。

一般來說,你會希望儘可能地讓你的功能免於副作用。如果你在幾處地方回顯輸出,你的代碼會變得非常混亂。返回值的函數也更加通用,因爲調用者可以決定是進一步處理該值還是立即回顯該值。然而,如果函數的目的是專門輸出文本(例如,根據模板負責構建和輸出頁面的類的方法),那麼它將很好。

例如,當您迴應文本你的功能就這樣的
7

...

function yourStatus(){ 
    echo ' Done'; 
} 

echo 'Status ='. yourStatus(); 

你的輸出看起來就像這樣

"DoneStatus =" 

代替

"Status = Done" 

歡呼聲

1

最近我看到這樣的代碼:

function check_something($var) { 
    if($var) { 
     echo "true"; 
     return true; 
    } else { 
     echo "false"; 
     return false; 
    } 
} 

他們爲什麼這樣做?迴應一些東西並在此之後返回真/假?這不是不好的做法/糟糕的編碼風格嗎?