仅在将值定义为构造函数中的参数时,类才起作用

时间:2019-06-18 12:20:11

标签: php oop

运行一个类而不将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应该可以工作,而不必在类构造函数中将变量定义为参数。

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