Heim > Backend-Entwicklung > PHP-Tutorial > Warum erhalte ich in PHP den Fehler „Auf die typisierte Eigenschaft darf vor der Initialisierung nicht zugegriffen werden'?

Warum erhalte ich in PHP den Fehler „Auf die typisierte Eigenschaft darf vor der Initialisierung nicht zugegriffen werden'?

Susan Sarandon
Freigeben: 2024-11-16 20:48:03
Original
863 Leute haben es durchsucht

Why Do I Get a

Verstehen des Fehlers „Auf typisierte Eigenschaften darf vor der Initialisierung nicht zugegriffen werden“ in Eigenschaften mit Typhinweisen

PHP 7.4 führte Typhinweise für Eigenschaften ein. Dies erfordert eine ordnungsgemäße Initialisierung aller Eigenschaften. Wenn einer Eigenschaft kein zugewiesener Wert zugewiesen wurde, verbleibt sie in einem undefinierten Zustand, der mit ihrem deklarierten Typ in Konflikt geraten könnte.

Zum Beispiel, wenn wir Folgendes deklarieren:

class Foo {
    private int $id;
    private ?string $val;
    private DateTimeInterface $createdAt;
    private ?DateTimeInterface $updatedAt;
}
Nach dem Login kopieren

Zugriff auf $val ohne vorherige Initialisierung würde zu folgendem Fehler führen: „Auf die typisierte Eigenschaft Foo::$val darf vor der Initialisierung nicht zugegriffen werden.“ Dies liegt daran, dass $val beim Zugriff weder eine Zeichenfolge noch null ist.

Um dieses Problem zu beheben, weisen Sie allen Eigenschaften gültige Werte zu, entweder als Standardwerte oder während der Erstellung. Für das obige Beispiel könnten wir Folgendes verwenden:

class Foo {
    private int $id;
    private ?string $val = null;
    private Collection $collection;
    private DateTimeInterface $createdAt;
    private ?DateTimeInterface $updatedAt;

    public function __construct(int $id) {
        // Setting default values for other properties
        $this->id = $id;
        $this->createdAt = new DateTimeImmutable();
        $this->updatedAt = new DateTimeImmutable();

        $this->collection = new ArrayCollection();
    }
}
Nach dem Login kopieren

Auf diese Weise haben alle Eigenschaften gültige Werte und die Instanz befindet sich in einem gültigen Zustand.

Dieser Fehler kann häufig auftreten, wenn man sich darauf verlässt Von der Datenbank generierte Werte wie IDs oder Zeitstempel. Für automatisch generierte IDs empfiehlt es sich, die Typdeklaration in private ?int $id = null zu ändern. Wählen Sie für andere Werte geeignete Standardwerte aus, die dem Typ der Eigenschaft entsprechen.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in PHP den Fehler „Auf die typisierte Eigenschaft darf vor der Initialisierung nicht zugegriffen werden'?. 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