Ошибка PHP Typed property must not be accessed before initialization

В PHP 7.4 появились typed properties, т.е. типизированные свойства класса. Теперь вы можете указывать тип свойства при его объявлении. 

Ошибка Typed property must not be accessed before initialization возникает в том случае, если вы попытаетесь получить значение типизированного свойства, которое в свою очередь еще не определено (не задано). Т.е. в классе вы написали:

protected int $number;

и где-то ниже в методе пытаетесь получить значение свойства:

$var = $this->number;

Вот тут и кроется причина проблема. В тот момент, когда вы пытаетесь получить значение свойства, PHP проверяет было ли оно задано раньше. И если вы обращаетесь к свойству, у которого нет значения - вы получите ошибку. Тип объявленного типизированного свойства uninitialized, а не null.

Что делать в таком случае? 

  • можно определить значение свойства перед вызовом
  • при объявлении свойства указать значение по умолчанию
  • отказаться от объявление типа
Категория