Pourquoi est-ce que j'obtiens une erreur « Propriété typée non initialisée » avec les astuces de type de propriété PHP 7.4 ?

Patricia Arquette
Libérer: 2024-11-17 15:56:02
original
552 Les gens l'ont consulté

Why Do I Get a

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

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

Pour les identifiants générés automatiquement, l'approche recommandée consiste à définir la propriété comme nullable :

private ?int $id = null;
Copier après la connexion

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!

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