stanislav-belichenko
@stanislav-belichenko
Backend PHP Developer

Есть ли готовые компоненты для Symfony (но можно и без привязки к нему), способные делать то, что делает Doctrine через рефлексию?

Задача такова: есть некий набор данных, получаемых не из БД, на основании которого хочется уметь достаточно просто, например на основании xml-конфига (yaml, php - не особо важно), уметь создавать новые сущности неких классов уровня модели. Например, мы получили по API ответ от некоего сервиса, содержащий поля и их значения некоего объекта "Документ", и после на основании некоего конфига мы создаем новый инстанс класса Document, с заполненными свойствами нужными нам значениями. Свойства приватные. Понятно, что это делается на основании рефлексии, но хочется получить некую готовую разработку. Создавать через конструктор не вариант по своим причинам.

Есть что-то подобное, или придется все-таки писать самим?
  • Вопрос задан
  • 190 просмотров
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
Прямой ответ на вопрос:

1. Symfony Normalizer в составе Symfony Serializer
https://symfony.com/doc/current/serializer/normali...
А именно PropertyNormalizer:
Symfony includes the following normalizers:
...
PropertyNormalizer to normalize PHP object using PHP reflection.


2. Zend Hydrator
Дока: https://docs.zendframework.com/zend-hydrator/
Код: https://github.com/zendframework/zend-hydrator

Именно как Доктрина через рекфлексию, то это ReflectionHydrator
Но в пакете есть и ряд других, не через рефлексию

Например свежая Cycle ORM юзает именно этот пакет

..................................

получили по API ответ от некоего сервиса, содержащий поля и их значения некоего объекта "Документ", и после на основании некоего конфига мы создаем новый инстанс класса Document, с заполненными свойствами нужными нам значениями. Свойства приватные
Создавать через конструктор не вариант по своим причинам.

А вот если прислушаться к вашей задаче, то что мешает создавать через фабричный метод (именованный конструктор)?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
07 мая 2024, в 23:32
1200 руб./в час
07 мая 2024, в 23:27
1000 руб./за проект
07 мая 2024, в 22:37
25000 руб./за проект