我一直在处理一个图像实体,当持久化时,使用内部方法使用钩子注释保存/移动/删除关联的图像文件,但我感觉实体本身应该只有相关的获取器和设置器。
我应该将方法留在实体中还是移动到监听器类中?
该实体具有以下方法:
生成唯一的文件名/路径 在持久化时将图像文件保存到磁盘上 级联删除时删除图像
但是我不确定是否喜欢这些方法存在于我的实体中。
我应该将方法留在实体中还是移动到监听器类中?
该实体具有以下方法:
生成唯一的文件名/路径 在持久化时将图像文件保存到磁盘上 级联删除时删除图像
但是我不确定是否喜欢这些方法存在于我的实体中。
/**
* @ORM\PostPersist()
* @ORM\PostUpdate()
*/
public function upload()
{
if(null === $this->getFile()) {
return;
}
// throws exception on error - stopping persist
$this->getFile()->move($this->getUploadRootDir(), $this->url);
if(isset($this->tmp)) {
unlink($this->getUploadRootDir() . '/'. $this->tmp);
$this->tmp = null;
}
$this->file = null;
}
我在考虑将它们移动到一个监听器类中,使用以下示例的方法,但我不喜欢它检查每种类型的实体是否持久,并且只关心“image”实体的想法:
public function postPersist(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
$entityManager = $args->getEntityManager();
if ($entity instanceof Image) {
// ... do something with the Product
}
}