Maison > développement back-end > tutoriel php > Pourquoi PHP lance-t-il « La propriété typée ne doit pas être accessible avant l'initialisation » ?

Pourquoi PHP lance-t-il « La propriété typée ne doit pas être accessible avant l'initialisation » ?

Barbara Streisand
Libérer: 2024-11-17 07:05:03
original
305 Les gens l'ont consulté

Why Does PHP Throw

Pourquoi l'erreur « La propriété typée ne doit pas être accessible avant l'initialisation » se produit avec les indices de type de propriété

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;
    }
}
Copier après la connexion

Essayer d'accéder à $val avant de l'attribuer entraînerait :

Fatal error: Typed property Foo::$val must not be accessed before initialization
Copier après la connexion

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();
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal