ฉันได้อัพเดตคำจำกัดความของคลาสของฉันเพื่อใช้ประโยชน์จากคำแนะนำประเภทคุณสมบัติที่แนะนำใหม่เช่นนี้:
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; }
}
แต่เมื่อพยายามที่จะบันทึกเอนทิตีของฉันบนหลักคำสอนฉันได้รับข้อผิดพลาดว่า:
คุณสมบัติตัวอย่างต้องไม่สามารถเข้าถึงได้ก่อนเริ่มต้น
สิ่งนี้ไม่เพียงเกิดขึ้นกับ$id
หรือ$createdAt
เท่านั้น แต่ยังเกิดขึ้นกับ$value
หรือ$updatedAt
ซึ่งเป็นคุณสมบัติที่มีค่าเป็นโมฆะ