Могу ли я объявить типизированное свойство, чтобы оно также принимало нулевое значение? - PullRequest
0 голосов
/ 30 марта 2020

Почему я получаю эту ошибку

Uncaught TypeError: Типизированное свойство $ description должно быть строкой, ноль используется

, когда я пытаюсь назначить null для типизированное свойство? Как это:

new Foo(null);
class Foo
{
  private string $description;

  public function __construct($description)
  {
    $this->description = $description; // <-- Error on this line
  }
}

1 Ответ

2 голосов
/ 31 марта 2020

PHP имеет поддержку обнуляемых типов , начиная с PHP 7.1 .

Если вы хотите объявить свойство, чтобы иметь возможность хранить оба указанных c type или null, вы добавляете ? к объявлению типа.

Используя ваш пример:

class Foo
{
  private ?string $description;

  public function __construct(?string $description)
  {
    $this->description = $description;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...