2015-11-21 176 views
1

我有一個包含多個方法的類。所以我想知道哪種方法更好?通過方法或類傳遞參數?

的方法傳遞:

class cls { 

    function method1($var){ 
     echo $var; 
    } 

    function method2($var){ 
     echo $var; 
    } 

} 

$obj = new cls; 
$obj->methodX($var); // X can be 1,2 

按類傳球:

class cls { 

    public $var; 
    function __construct($var){ 
     $this->var = $var; 
    } 

    function method1(){ 
     echo $this->var; 
    } 

    function method2(){ 
     echo $this->var; 
    } 

} 

$obj = new cls($var); 
$obj->methodX(); // X can be 1,2 

注:我需要在所有的方法$var。實際上也有近10種方法。

+6

對此沒有一般的答案。這取決於'$ var'是什麼意思表達的類相關。如果它是以某種方式描述對象的值,或者是對象的屬性或其行爲,那麼它應該被建模。如果它與類或對象無關,但只是一個運行時參數或輸出添加,那麼它應該在運行時提供,如果需要的話。 – arkascha

+0

@arkascha我明白了,謝謝。 – stack

+0

你應該解釋你的真實商業案例,而不是試圖從人爲的問題中得到答案。 – plalx

回答

0

從設計的角度來說,我會去與課堂傳遞。它允許你只傳遞一次參數。它還會刪除您在要調用方法的每個方法/函數中對參數的依賴關係。

兩者之間的性能比較可忽略(reference)。

+0

它不會刪除依賴關係,它只是將它從方法中隱藏起來並將其與類綁定。根據上下文,這並不是一件壞事,但由於我們不瞭解上下文,所以這樣的一般答案是危險的建議。 –