Чтобы определить, следует ли проверять сущность, я бы проверил, есть ли у нее атрибут #[Auditable].
Все работает хорошо, пока сущность не загружается с использованием прокси, который по сути является классом, расширяющим саму сущность, но моя проверка не проходит. у объекта есть необходимый атрибут.
Вот код, который я использую для получения атрибутов класса:
Код: Выделить всё
public function getAttribute($entity, string $attributeClass): mixed
{
if (!is_object($entity)) {
return null;
}
$reflectionClass = new ReflectionClass($entity);
$reflectionAttr = $reflectionClass->getAttributes($attributeClass)[0] ?? null;
return $reflectionAttr ? $reflectionAttr->newInstance() : null;
}
Я пробовал активно загружать объекты, но это было ненадежно, поскольку в некоторых ситуациях он все равно отображается в прокси-классе, поэтому вместо того, чтобы пытаться применить «реальный» объект, я считаю, что есть лучший способ работать с Doctrine, а не против него.
/>Другим вариантом может быть интерфейс, но я стараюсь минимизировать код, и мне кажется, что атрибут лучше подходит для этой работы, если я смогу заставить его работать с прокси-сервером Doctrine.
Ура!>
Подробнее здесь: https://stackoverflow.com/questions/757 ... rent-class
Мобильная версия