Есть годная либа
https://github.com/spatie/data-transfer-objectНо она требует, чтобы 'классовые' типы указывались c полным путём в @var. Стоит ли говорить, что после ближайшего code clean up полные декларации слизываются и остается только имя класса, остальное улетает в use. Через tokenizer сделал возможным резолвинг полного имени класса из короткого.
Так же не поддерживает кастомные имена источников данных. Например, в массиве ключ 'ABDURAHMAN_IBN', и я должен в dto иметь property ровно с таким же названием. В моей хреновне есть возможность задать
@source для аттрибута с произвольным именем.