mordilion/generated-abstract-hydrator 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

mordilion/generated-abstract-hydrator

最新稳定版本:v2.3.2

Composer 安装命令:

composer require mordilion/generated-abstract-hydrator

包简介

Extension-Library for Ocramius/GeneratedHydrator to use AbstractHydrator for the strategy functionality and recursive hydration

README 文档

README

Installation

composer require mordilion/generated-abstract-hydrator

Examples

Simple

Generator-Method

use GeneratedHydrator\Configuration; use Mordilion\GeneratedAbstractHydrator\ClassGenerator\AbstractHydratorGenerator; use Mordilion\GeneratedAbstractHydrator\Hydrator\PerformantAbstractHydrator; function getClassHydrator(string $class): PerformantAbstractHydrator { $config = new Configuration($class); $config->setHydratorGenerator(new AbstractHydratorGenerator(PerformantAbstractHydrator::class)); $hydratorClass = $config->createFactory()->getHydratorClass(); if (!class_exists($hydratorClass)) { throw new \RuntimeException('Could not create Hydrator!'); } /** @var PerformantAbstractHydrator $hydrator */ $hydrator = new $hydratorClass(); return $hydrator; }

Usage of nested Objects

use Mordilion\GeneratedAbstractHydrator\Strategy\RecursiveHydrationStrategy; use Zend\Hydrator\Strategy\DateTimeFormatterStrategy; class Book { /**  * @var string  */ public $title; /**  * @var DateTime  */ public $publishedAt; } class Author { /**  * @var string  */ public $name; /**  * @var string  */ public $firstname; /**  * @var Book[]  */ public $books; } // --- $data = [ 'name' => 'Böll', 'firstname' => 'Heinrich', 'books' => [ ['title' => 'Die schwarzen Schafe', 'publishedAt' => '1951-01-01'], ['title' => 'Wo warst du, Adam?', 'publishedAt' => '1951-01-01'], ['title' => 'Ansichten eines Clowns', 'publishedAt' => '1963-01-01'], ], ]; $bookHydrator = getClassHydrator(Book::class); $bookHydrator->addStrategy('publishedAt', new DateTimeFormatterStrategy('Y-m-d')); $authorHydrator = getClassHydrator(Author::class); $authorHydrator->addStrategy('books', new RecursiveHydrationStrategy(new Book(), $bookHydrator, true)); $object = new Author(); $authorHydrator->hydrate($data, $object); var_dump($object);

output:

class Author#2 (3) { public $name => string(5) "Böll" public $firstname => string(8) "Heinrich" public $books => array(3) { [0] => class Book#4 (2) { public $title => string(20) "Die schwarzen Schafe" public $publishedAt => class DateTime#3841 (3) { public $date => string(26) "1951-01-01 06:17:41.000000" public $timezone_type => int(3) public $timezone => string(3) "UTC" } } [1] => class Book#3840 (2) { public $title => string(18) "Wo warst du, Adam?" public $publishedAt => class DateTime#3839 (3) { public $date => string(26) "1951-01-01 06:17:41.000000" public $timezone_type => int(3) public $timezone => string(3) "UTC" } } [2] => class Book#3838 (2) { public $title => string(22) "Ansichten eines Clowns" public $publishedAt => class DateTime#3837 (3) { public $date => string(26) "1963-01-01 06:17:41.000000" public $timezone_type => int(3) public $timezone => string(3) "UTC" } } } } 

统计信息

  • 总下载量: 15.22k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固