Pourquoi vous pouvez rencontrer une erreur « Propriété typée non initialisée » avec les indices de type de propriété
Lors de l'utilisation des nouveaux indices de type de propriété dans PHP 7.4 , il est crucial de fournir des valeurs valides pour toutes les propriétés. Contrairement aux valeurs nulles, les propriétés non définies ne correspondent à aucun type déclaré.
Par exemple, avec la classe suivante :
class Foo { private int $id; private ?string $val; private DateTimeInterface $createdAt; private ?DateTimeInterface $updatedAt; public function __construct(int $id) { $this->id = $id; } }
L'accès direct à $val entraînera une "Propriété typée non initialisée " erreur car elle n'a pas de valeur valide (ni chaîne ni null).
Pour résoudre ce problème, assurez-vous que toutes les propriétés ont des valeurs appropriées lors de l'initialisation. Les valeurs par défaut ou les valeurs de définition lors de la construction sont deux options :
class Foo { private int $id; private ?string $val = null; private DateTimeInterface $createdAt; private ?DateTimeInterface $updatedAt; public function __construct(int $id) { $this->id = $id; $this->createdAt = new DateTimeImmutable(); $this->updatedAt = new DateTimeImmutable(); } }
Pour les identifiants générés automatiquement, l'approche recommandée consiste à définir la propriété comme nullable :
private ?int $id = null;
Rappelez-vous, propriétés non définies n'ont pas de valeurs nulles et leurs valeurs doivent toujours correspondre à leurs types déclarés. En fournissant des valeurs initiales ou des valeurs par défaut, vous pouvez éviter cette erreur d'initialisation et garantir un état d'instance valide.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!