2015-11-21 121 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

它不会删除依赖关系,它只是将它从方法中隐藏起来并将其与类绑定。根据上下文,这并不是一件坏事,但由于我们不了解上下文,所以这样的一般答案是危险的建议。 –