Задать вопрос
stanislav-belichenko
@stanislav-belichenko
Backend PHP Developer

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

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

Есть что-то подобное, или придется все-таки писать самим?
  • Вопрос задан
  • 204 просмотра
Подписаться 4 Средний 6 комментариев
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
Прямой ответ на вопрос:

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, с заполненными свойствами нужными нам значениями. Свойства приватные
Создавать через конструктор не вариант по своим причинам.

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽