Heim > Backend-Entwicklung > PHP-Tutorial > Warum erhalte ich bei PHP 7.4-Eigenschaftstyphinweisen die Fehlermeldung „Typisierte Eigenschaft nicht initialisiert'?

Warum erhalte ich bei PHP 7.4-Eigenschaftstyphinweisen die Fehlermeldung „Typisierte Eigenschaft nicht initialisiert'?

Patricia Arquette
Freigeben: 2024-11-17 15:56:02
Original
616 Leute haben es durchsucht

Why Do I Get a

Warum Sie bei Eigenschaftstyphinweisen auf den Fehler „Typisierte Eigenschaft nicht initialisiert“ stoßen können

Bei Verwendung der neuen Eigenschaftstyphinweise in PHP 7.4 ist es wichtig, gültige Werte für alle Eigenschaften bereitzustellen. Im Gegensatz zu Nullwerten stimmen undefinierte Eigenschaften mit keinem deklarierten Typ überein.

Zum Beispiel mit der folgenden Klasse:

class Foo {
    private int $id;
    private ?string $val;
    private DateTimeInterface $createdAt;
    private ?DateTimeInterface $updatedAt;

    public function __construct(int $id) {
        $this->id = $id;
    }
}
Nach dem Login kopieren

Der direkte Zugriff auf $val führt zu der Meldung „Typisierte Eigenschaft nicht initialisiert“. " Fehler, da es keinen gültigen Wert hat (weder String noch Null).

Um dieses Problem zu beheben, stellen Sie sicher, dass alle Eigenschaften bei der Initialisierung über geeignete Werte verfügen. Standardwerte oder Einstellungswerte während der Erstellung sind zwei Optionen:

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();
    }
}
Nach dem Login kopieren

Für automatisch generierte IDs besteht der empfohlene Ansatz darin, die Eigenschaft als nullbar zu definieren:

private ?int $id = null;
Nach dem Login kopieren

Denken Sie an undefinierte Eigenschaften haben keine Nullwerte und ihre Werte müssen immer mit ihren deklarierten Typen übereinstimmen. Durch die Bereitstellung von Anfangswerten oder Standardwerten können Sie diesen Initialisierungsfehler verhindern und einen gültigen Instanzstatus sicherstellen.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich bei PHP 7.4-Eigenschaftstyphinweisen die Fehlermeldung „Typisierte Eigenschaft nicht initialisiert'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage