mouf/tdbm-hydrator 问题修复 & 功能扩展

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

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

mouf/tdbm-hydrator

Composer 安装命令:

composer require mouf/tdbm-hydrator

包简介

A PHP hydrator allowing easy mapping between an array and an object.

README 文档

README

Latest Stable Version Total Downloads Latest Unstable Version License Scrutinizer Code Quality Build Status Coverage Status

About the TDBM hydrator

This package contains an hydrator. An hydrator is a class that takes an array in parameter and maps it to an object (calling the appropriate getters and setters).

Unlike most existing hydrators that need an object instance to be filled, the tdbm-hydrator package can (optionally) create a new object instance. This is very useful when you have big constructors with lots of parameters to fill from the array, which happen often if you use TDBM.

Note that this package is completely standalone and does not need TDBM or Mouf to run. Still, this hydrator is known to work very well with TDBM generated beans (hence the name).

Installation

composer require mouf/tdbm-hydrator

Usage

Let's assume you have a simple Product class:

class Product
{
    private $name;
    private $price;
    private $inStock;

    public function __construct(string $name, float $price)
    {
        $this->name = $name;
        $this->price = $price;
    }

    public function setName(string $name)
    {
        $this->name = $name;
    }

    public function setPrice(float $price)
    {
        $this->price = $price;
    }

    public function setInStock(bool $inStock)
    {
        $this->inStock = $inStock;
    }

    // Let's assume we have getters too...
}

Now, I have this PHP array I want to turn into an object:

$productAsArray = [
    'name' => 'My product',
    'price' => '99',
    'in_stock' => true
]

Creating a new hydrated object

I can create an object ex-nihilo, using the following code:

$hydrator = new TdbmHydrator();

$product = $hydrator->hydrateNewObject([
    'name' => 'My product',
    'price' => '99',
    'in_stock' => true
], Product::class);

Notice that:

  • the TdbmHydrator will map each item of the array to the constructor arguments or the setters
  • the TdbmHydrator can sort out differences between camel-case and underscored names (for instance, it can map in_stock to setInStock())

Hydrating an existing object

I can also fill an existing object with values from an array. In this case, only setters are called:

$product = new Project('My product', 99);

$hydrator->hydrateObject([
    'in_stock' => true
], $product);

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-07-05

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固