运行一个类而不将property的值定义为参数似乎应该可行。有人可以说明为什么下面的test-1不起作用吗?
// Test-1: Property defined without value. This does not work.
class my_class1 {
private $color_1;
public function __construct($color_1)
{
$this->color_1 = $color_1;
}
}
// Test-2: Property defined with value. This works.
class my_class2 {
private $color_2;
public function __construct($color_2 = 1)
{
$this->color_2 = $color_2;
}
}
想要的行为:
Test-1应该可以工作,而不必在类构造函数中将变量定义为参数。
答案 0 :(得分:2)
如果在构造函数中的参数上没有默认设置,则在实例化类时需要为该参数指定一个值。
$object1 = new my_class1(); // error
$object1 = new my_class1(2); // valid
// $this->color_1 == 2
通过添加默认值,如果您在实例化过程中未指定值,它将使用该值:
$object2 = new my_class2();
// $this->color_2 == 1
$object2b = new my_class2(5);
// $this->color_2 == 5