В моем проекте Symfony 5 я нахожусь в процессе перехода с PHP 7.3 на 7.4.
Теперь я могу ввести все свои свойства.
В моих файлах сущностей PhpStorm автоматически набрал для меня все мои свойства, но я очень часто получаю такую ошибку:
Типизированное свойство App\Entity\User::$name не должно быть доступно до инициализации
Я просмотрел несколько сайтов, которые говорят об этой проблеме, например:
https://github.com/doctrine/orm/issues/7944
Но у меня нет реального ответа на то, что мне действительно нужно делать, некоторые люди, кажется, противоречат друг другу.
Итак, если я правильно понимаю, мне пришлось перейти от:
private ?string $name;
to
private ?string $name = null;
И то же самое для всех свойств $id, я должен поставить:
private ?int $id = null;
Это правильно ?
Теперь, должен ли я воспроизвести эту систему для абсолютно всех моих свойств, которые могут принимать значение NULL?
Но это еще не все, у меня также есть свойства, которые не должны быть обнуляемыми, но которым сеттеры и геттеры все же предложили эту возможность.
И PhpStorm автоматически вводит эти свойства для меня как обнуляемые. Должен ли я также инициализировать их с нулевым значением?
Для DateTime? Я тоже инициализирую их нулевым значением?
Отношения между сущностями?
И, наконец, коллекции? Раньше я использовал ArrayCollection, а теперь мне нужно вводить их с помощью Collection, например:
private Collection $absences;
Но до этого в конструкторе у меня было так:
public function __construct()
{
$this->absences = new ArrayCollection();
}
Должен ли я сохранить это?
Большое спасибо за все ваши ответы!
new ArrayCollection()
. Это все еще дурак. Перед обращением к свойствам необходимо инициализировать их значением правильного типа. - person yivi   schedule 08.04.2021