Maison > Article > développement back-end > Pourquoi PHP lance-t-il « La propriété typée ne doit pas être accessible avant l'initialisation » ?
PHP 7.4 a introduit l'indication de type pour les propriétés, soulignant la nécessité de fournir valeurs valides pour toutes les propriétés. Cependant, accéder aux propriétés sans les attribuer peut entraîner une erreur, car les propriétés non définies ne correspondent pas aux types déclarés.
Considérez le code suivant :
class Foo { private int $id; private ?string $val; private DateTimeInterface $createdAt; private ?DateTimeInterface $updatedAt; public function __construct(int $id) { $this->id = $id; } }
Essayer d'accéder à $val avant de l'attribuer entraînerait :
Fatal error: Typed property Foo::$val must not be accessed before initialization
Pour résoudre ce problème, attribuez des valeurs correspondant aux types déclarés soit comme valeurs par défaut, soit pendant la construction. Par exemple :
class Foo { private int $id; private ?string $val = null; private ?DateTimeInterface $updatedAt; public function __construct(int $id) { $this->id = $id; $this->createdAt = new DateTimeImmutable(); $this->updatedAt = new DateTimeImmutable(); } }
Cela garantit que toutes les propriétés ont des valeurs valides, éliminant ainsi l'erreur.
Lorsque vous traitez des valeurs générées automatiquement comme les identifiants, déclarer la propriété comme privée ?int $id = null est recommandé. Pour les autres propriétés sans affectation spécifique, choisissez les valeurs par défaut appropriées en fonction de leurs types.
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!