В PHP 7.4 появились typed properties, т.е. типизированные свойства класса. Теперь вы можете указывать тип свойства при его объявлении.
Ошибка Typed property must not be accessed before initialization возникает в том случае, если вы попытаетесь получить значение типизированного свойства, которое в свою очередь еще не определено (не задано). Т.е. в классе вы написали:
protected int $number;
и где-то ниже в методе пытаетесь получить значение свойства:
$var = $this->number;
Вот тут и кроется причина проблема. В тот момент, когда вы пытаетесь получить значение свойства, PHP проверяет было ли оно задано раньше. И если вы обращаетесь к свойству, у которого нет значения - вы получите ошибку. Тип объявленного типизированного свойства uninitialized, а не null.
Что делать в таком случае?
- можно определить значение свойства перед вызовом
- при объявлении свойства указать значение по умолчанию
- отказаться от объявление типа
Категория