Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebt man den Fehler „Auf die typisierte Eigenschaft darf vor der Initialisierung nicht zugegriffen werden' in PHP?

Wie behebt man den Fehler „Auf die typisierte Eigenschaft darf vor der Initialisierung nicht zugegriffen werden' in PHP?

DDD
DDDOriginal
2024-11-20 04:52:02303Durchsuche

How to Fix the

Den Fehler „Auf typisierte Eigenschaften darf vor der Initialisierung nicht zugegriffen werden“ verstehen

Mit der Einführung von Eigenschaftstyphinweisen in PHP 7.4 ist es von entscheidender Bedeutung, ihnen gültige Werte zuzuweisen Alle Eigenschaften, um sicherzustellen, dass ihre deklarierten Typen respektiert werden. Eine undefinierte Eigenschaft ohne zugewiesenen Wert stimmt nicht mit einem deklarierten Typ überein und löst die Fehlermeldung aus: „Auf die typisierte Eigenschaft darf vor der Initialisierung nicht zugegriffen werden.“

Bedenken Sie beispielsweise den folgenden Code:

class Foo {
    private string $val;

    public function __construct(int $id) {
        $this->id = $id;
    }

    public function getVal(): string { return $this->val; }
}

Der Zugriff auf $val nach der Konstruktion von Foo würde zu einem Fehler führen, da sein Typ noch nicht definiert ist (undefiniert !== null).

Um dieses Problem zu beheben, weisen Sie allen Eigenschaften während der Konstruktion Werte zu oder Legen Sie Standardwerte für sie fest:

class Foo {
    private string $val = null;  // default null value

    public function __construct(int $id) {
        $this->id = $id;
    }
}

Jetzt haben alle Eigenschaften gültige Werte, wodurch der Fehler behoben wird.

Dieses Problem kann auch auftreten, wenn Sie sich auf Datenbankwerte für Entitätseigenschaften, wie z. B. Auto, verlassen -generierte IDs oder Zeitstempel. Deklarieren Sie automatisch generierte IDs als nullfähig:

private ?int $id = null;

Wählen Sie für alle anderen die entsprechenden Standardwerte aus, die ihren Typen entsprechen.

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Auf die typisierte Eigenschaft darf vor der Initialisierung nicht zugegriffen werden' in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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