3 回答

TA貢獻1887條經驗 獲得超5個贊
通常,實現所需目標的方法就是不使用設置器并在實體實例化期間填充字段。
class Foo
private $number;
private $createdAt;
public __construct() {
$this->createdAt = new DateTimeImmutable();
}
public getCreatedAt(): DateTimeImmutable {
return $this->createdAt;
}
public setNumber(int $number) {
$this->number = $number;
}
public getNumber(): int { return $this->int; }
}
這樣你就可以知道你的實體將始終有一個createdAt不依賴于 DB 或 Doctrine 的有效字段,并且由于你沒有設置器,你不能從外部修改值(不訴諸反射或其他技巧)。

TA貢獻1853條經驗 獲得超9個贊
這不是真正的約束。
你可以這樣做
class Foo?
{
? ? /**
? ? ?* @var \DateTime
? ? ?* @ORM\Column(type="datetime")
? ? ?*/
? ? private $createdAt;
? ? public __construct() {
? ? ? ? $this->createdAt = new DateTime();
? ? }
? ? public getCreatedAt(): DateTime {
? ? ? ? return $this->createdAt;
? ? }
? ? ...
}
順便說一下,看看 Gedmo/Timestampable,它為您的實體和映射提供了一些東西。?
- 3 回答
- 0 關注
- 128 瀏覽
添加回答
舉報