我是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
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
答案 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;
}
}