mouf / tdbm-hydrator
一个允许轻松在数组与对象之间映射的PHP hydrator。
1.0.x-dev
2016-07-05 15:08 UTC
Requires
- php: >=7.0
- danielstjules/stringy: ^2.3.2
Requires (Dev)
- phpunit/phpunit: ^5.4.6
- satooshi/php-coveralls: ~1.0
This package is auto-updated.
Last update: 2024-09-15 05:34:02 UTC
README
关于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
将映射数组的每个项到构造函数参数或setterTdbmHydrator
可以处理驼峰式命名和下划线命名之间的差异(例如,它可以映射in_stock
到setInStock()
)
填充现有对象
我还可以用数组中的值填充现有的对象。在这种情况下,只调用setter
$product = new Project('My product', 99); $hydrator->hydrateObject([ 'in_stock' => true ], $product);