Класс работает только при определении значения в качестве аргумента в конструкторе - PullRequest
0 голосов
/ 18 июня 2019

Кажется, что запуск класса без определения значения свойства в качестве аргумента должен работать.Может кто-нибудь объяснить, почему тест-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;
    }
}

Требуемое поведение:

Тест-1 должен работать без определения переменной в качестве аргументав конструкторе класса.

1 Ответ

2 голосов
/ 18 июня 2019

Если у вас нет параметра по умолчанию для параметра в конструкторе, вам нужно будет указать значение для этого параметра при создании экземпляра класса.

$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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...