将参数传递给构造函数而不是构造函数以外的方法?

时间:2011-10-06 21:33:50

标签: php oop

我是OOP的新手,只是想知道,在一个类中,何时应该将参数传递给构造函数而不是构造函数以外的方法?

将参数传递给构造函数的示例

class Foo {
    public function __construct($a, $b, $c) {
        $this->sum = $a + $b + $c;
    }

    public function display(){
        echo $this->sum;
    }
}
$foo = new Foo(1,2,3);
echo $foo->display(); //Displays 6

将参数传递给构造函数

以外的方法的示例(感谢Geoff Adams在我之前提出的问题中写过这个问题)

class Foo {
    public function sum($a, $b, $c) {
        $sum = $a + $b + $c;

        return $sum;
    }
}

$foo = new Foo();
echo $foo->sum(1,2,3); //Displays 6

2 个答案:

答案 0 :(得分:0)

没有规则。这取决于你将如何使用这门课程。你甚至可以在同一个班级内双向完成。

答案 1 :(得分:0)

我认为你的问题是不正确的,因为它取决于类的目的,你的例子非常抽象。但是,除了初始化之外,您不应该在构造函数中执行任何操作,是的,最好将初始数据传递给构造函数。另一种方法是使用setter的方法。 无论如何,我认为对于第一个变体你应该使用带结构的类更好:

class Foo {
    private $a = 0;
    private $b = 0;
    private $c = 0;
    private $sum = null;

    public function __construct($a, $b, $c) {
        $this->a = $a;
        $this->b = $b;
        $this->c = $c;
    }
    public function sum()
    {
         $this->sum = $this->a+$this->b+$this->c;
    }

    public function display(){
        if (is_null($this->sum)) {
            $this->sum();
        }
        echo $this->sum;
    }
}