mouf/tdbm-hydrator

一个允许轻松在数组与对象之间映射的PHP hydrator。

1.0.x-dev 2016-07-05 15:08 UTC

This package is auto-updated.

Last update: 2024-09-15 05:34:02 UTC


README

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

关于TDBM hydrator

此包包含一个 hydrator。一个 hydrator 是一个类,它接受一个数组作为参数并将其映射到对象(调用适当的getter和setter)。

与大多数需要填充对象的实例来填充的现有hydrator不同,tdbm-hydrator 包(可选地)可以创建一个新的对象实例。当你有大量的构造函数和参数需要从数组中填充时,这非常有用,尤其是在使用 TDBM 时。

请注意,此包完全独立,无需TDBM或Mouf即可运行。尽管如此,此hydrator已知与TDBM生成的bean配合得非常好(因此得名)。

安装

composer require mouf/tdbm-hydrator

用法

假设你有一个简单的 Product

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...
}

现在,我有一个PHP数组,我想将其转换为对象

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

创建新的 hydrated 对象

我可以创建一个新的对象,使用以下代码

$hydrator = new TdbmHydrator();

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

注意

  • TdbmHydrator 将映射数组的每个项到构造函数参数或setter
  • TdbmHydrator 可以处理驼峰式命名和下划线命名之间的差异(例如,它可以映射 in_stocksetInStock()

填充现有对象

我还可以用数组中的值填充现有的对象。在这种情况下,只调用setter

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

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