wake-up-neo.net

Warum erhalte ich plötzlich den Fehler "Auf typisierte Eigenschaften darf vor der Initialisierung nicht zugegriffen werden", wenn Hinweise zum Typ der Eigenschaften eingeführt werden?

Ich habe meine Klassendefinitionen aktualisiert, um die neu eingeführten Hinweise zum Eigenschaftstyp wie folgt zu verwenden:

class Foo {

    private int $id;
    private ?string $val;
    private DateTimeInterface $createdAt;
    private ?DateTimeInterface $updatedAt;

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


    public function getId(): int { return $this->id; }
    public function getVal(): ?string { return $this->val; }
    public function getCreatedAt(): ?DateTimeInterface { return $this->createdAt; }
    public function getUpdatedAt(): ?DateTimeInterface { return $this->updatedAt; }

    public function setVal(?string $val) { $this->val = $val; }
    public function setCreatedAt(DateTimeInterface $date) { $this->createdAt = $date; }
    public function setUpdatedAt(DateTimeInterface $date) { $this->updatedAt = $date; }
}

Aber wenn ich versuche, meine Entität auf Doctrine zu speichern, erhalte ich die Fehlermeldung:

Auf typisierte Eigenschaften darf vor der Initialisierung nicht zugegriffen werden

Dies geschieht nicht nur mit $id oder $createdAt, aber auch mit $value oder $updatedAt, die nullbare Eigenschaften sind.

19
yivi

Für nullfähige typisierte Eigenschaften müssen Sie die Syntax verwenden

private ?string $val = null;

andernfalls wird ein schwerwiegender Fehler ausgegeben.

Da dieses Konzept zu unnötigen schwerwiegenden Fehlern führt, habe ich einen Fehlerbericht erstellt https://bugs.php.net/bug.php?id=7962 - ohne Erfolg, aber zumindest habe ich es versucht. ..

0
Hhyperion