【问题标题】:Passing parameter by method or class?通过方法或类传递参数?
【发布时间】:2016-02-24 05:03:22
【问题描述】:

我有一个包含多个方法的类。所以我想知道哪种方法更好?

通过方法传递:

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 种方法。

【问题讨论】:

  • 对此没有一般的答案。这取决于$var 与该类相关的含义。如果它是一个以某种方式描述对象的值,或者是对象的属性或其行为,那么它应该被建模为这样。如果它与类或对象无关,而只是运行时参数或输出添加,则应在运行时根据需要提供。
  • @arkascha 我明白了,谢谢。
  • 你应该解释你真实的商业案例,而不是试图从一个人为的问题中得到答案。

标签: php oop parameter-passing


【解决方案1】:

从设计的角度来看,我会在课堂上传递它。它允许您只传递一次参数。它还消除了您在要调用方法的每个方法/函数中对参数的依赖。

两者之间的性能比较可以忽略不计(reference)。

【讨论】:

  • 它不会删除依赖,它只是将它隐藏在方法中并将其耦合到类。根据上下文,这不一定是一件坏事,但由于我们不知道上下文,所以这样的笼统答案是危险的建议。
猜你喜欢
  • 1970-01-01
  • 2015-01-15
  • 2016-04-26
  • 1970-01-01
  • 2019-11-11
  • 2011-04-26
  • 1970-01-01
  • 2014-02-05
  • 2021-12-19
相关资源
最近更新 更多