Доступ к атрибутам родительского классаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Доступ к атрибутам родительского класса

Сообщение Anonymous »

Я использую атрибуты PHP8 для пометки сущностей Doctrine в проекте Symfony, чтобы настроить сущность для ведения журнала аудита.
Чтобы определить, следует ли проверять сущность, я бы проверил, есть ли у нее атрибут #[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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»