次のように、新しく導入されたプロパティタイプのヒントを利用するようにクラス定義を更新しました。
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; }
}
しかし、Doctrineにエンティティを保存しようとすると、次のエラーが表示されます:
初期化する前に型付きプロパティにアクセスしてはなりません
これは$id
または$createdAt
だけでなく、$value
または$updatedAt
、null許容プロパティです。
Null許容型付きプロパティの場合、構文を使用する必要があります
private ?string $val = null;
そうしないと、致命的なエラーがスローされます。
この概念は不必要な致命的なエラーにつながるため、バグレポート https://bugs.php.net/bug.php?id=7962 -を作成しましたが、成功しませんでしたが、少なくとも試しました。 ..