У меня есть метод в моей сущности с @ORM \ PostRemove (), который удаляет связанный файл.
Интересно, я должен сделать что-то вроде этого:
try {
unlink($file);
} catch (\Exception $e) {
// Nothing here?
}
Имеет ли смысл перехватывать исключение и ничего не делать в блоке catch? Или, может быть, я не должен ловить исключение здесь, но тогда, где я должен это сделать? Должно ли это быть исключением из метода LifecycleCallback?
я прочел Вот что я не должен использовать регистратор в сущности, так что я не понимаю, что вместо этого поместить.
Ваша сущность не должна содержать бизнес-логику для вашего приложения, ее цель — сопоставить объекты с записями базы данных.
Способ решения этой проблемы зависит от приложения, например, если у вас есть File Controller и команда removeAction, тогда лучшее место для удаления файла, скорее всего, здесь.
Как пример: (псевдо код)
public function removeAction($id) {
$em = $this->getDoctrine()->getEntityManager();
$file = $em->getRepository('FileBundle:File')->find($id);
if (!$file) {
throw $this->createNotFoundException('No file found for id '.$id);
}
$filePath = $file->getPath();
if (file_exists($filePath) {
try {
unlink($filePath);
}
catch(Exception $e) {
// log it / email developers etc
}
}
$em->remove($file);
$em->flush();
}
Вы всегда должны добавлять проверку ошибок и отчеты в свое приложение, проверять, существует ли файл, прежде чем пытаться удалить его.
Других решений пока нет …