Lors de l'introduction d'indices de type de propriété dans vos classes PHP, vous pouvez rencontrer une erreur indiquant , "La propriété typée ne doit pas être accessible avant l'initialisation." Cette erreur se produit lors de l'accès à une propriété avant qu'elle n'ait été initialisée avec une valeur valide correspondant à son type déclaré.
Selon l'indication de type de PHP 7.4 pour les propriétés, toutes les propriétés doivent avoir valeurs correspondant à leurs types déclarés. Une propriété non attribuée est dans un état indéfini et ne correspondra à aucun type déclaré, même nul.
Considérez le code suivant :
class Foo { private int $id; private ?string $val; private DateTimeInterface $createdAt; private ?DateTimeInterface $updatedAt; // Getters and setters omitted for brevity... } $f = new Foo(1); $f->getVal(); // Error: Typed property Foo::$val must not be accessed before initialization
Dans cet exemple, accéder à la propriété $val sans lui attribuer de chaîne ou de valeur nulle lance d'abord un erreur.
Valeurs par défaut :
Vous pouvez attribuer des valeurs par défaut aux propriétés lors de la déclaration :
class Foo { private ?string $val = null; // Default null value for optional property }
Initialisation du constructeur :
Initialiser les propriétés dans le constructeur :
class Foo { public function __construct(int $id) { // Assign values to all properties $this->id = $id; $this->createdAt = new DateTimeImmutable(); $this->updatedAt = new DateTimeImmutable(); } }
Types nullables :
Pour les propriétés facultatives, déclarez-les comme nullables :
private ?int $id;
Valeurs générées par la base de données (ID générés automatiquement) :
Utilisez des types nullables pour les propriétés initialisées par le base de données :
private ?int $id = null;
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!