私はブログアプリケーションを書いていると仮定します:私のPosts
エンティティはcreateddate
,modifieddate
、name
、slug
のプロパティを持ちます(エンティティに対してsetName()を呼び出すと、slugが生成されます)。私はこのコードを再利用したいが、にオンデマンドでを再利用したい。私は、例えば、createddate
を使用したいLog
エンティティを持っているかもしれませんが、modifieddate
またはslug
の機能性を持っていません。 traits(ミックスイン)または抽象クラスを経由して、不十分な、または少なくとも不適切と思われる、それはを通過しないように、この機能を再利用する手法であるかどうか、試験Doctrine 2エンティティで列とイベントを再利用するにはどうすればよいですか?
クラスの継承。結局のところ、エンティティは、 createddateを持っていますが、作成日自体ではありません。継承よりもむしろCompositionを使用する必要があります。私はオンデマンドこの機能を使用する一方で、注釈およびオブジェクトのプロパティの教義の使用は、水平方向の注入が困難になるように見えるので、observerは、ここで働いていないようだ(そして高価な?)Reflectionを使用せずに。 私はすぐにDRYや良いOOP(構成/継承の適切な使用)を壊すことなく、以下の定義と機能をエンティティに注入できますか?
/**
* @var DateTime $createddate
*
* @ORM\Column(type="datetime")
*/
private $createddate;
/**
* @ORM\PrePersist
*/
public function createddatePrePersist() {
$this->createddate = new \DateTime('now');
}