{"id":18929372,"url":"https://github.com/thecodingmachine/tdbm-hydrator","last_synced_at":"2026-03-16T14:30:17.235Z","repository":{"id":57020148,"uuid":"62636413","full_name":"thecodingmachine/tdbm-hydrator","owner":"thecodingmachine","description":"A PHP hydrator allowing easy mapping between an array and an object.","archived":false,"fork":false,"pushed_at":"2016-07-05T15:08:12.000Z","size":10,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":8,"default_branch":"1.0","last_synced_at":"2025-02-16T12:30:30.585Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thecodingmachine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-05T12:50:02.000Z","updated_at":"2020-02-24T17:27:35.000Z","dependencies_parsed_at":"2022-08-22T20:40:28.632Z","dependency_job_id":null,"html_url":"https://github.com/thecodingmachine/tdbm-hydrator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodingmachine%2Ftdbm-hydrator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodingmachine%2Ftdbm-hydrator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodingmachine%2Ftdbm-hydrator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodingmachine%2Ftdbm-hydrator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thecodingmachine","download_url":"https://codeload.github.com/thecodingmachine/tdbm-hydrator/tar.gz/refs/heads/1.0","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239927823,"owners_count":19719835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T11:32:14.877Z","updated_at":"2026-03-16T14:30:17.163Z","avatar_url":"https://github.com/thecodingmachine.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Latest Stable Version](https://poser.pugx.org/mouf/tdbm-hydrator/v/stable)](https://packagist.org/packages/mouf/tdbm-hydrator)\n[![Total Downloads](https://poser.pugx.org/mouf/tdbm-hydrator/downloads)](https://packagist.org/packages/mouf/tdbm-hydrator)\n[![Latest Unstable Version](https://poser.pugx.org/mouf/tdbm-hydrator/v/unstable)](https://packagist.org/packages/mouf/tdbm-hydrator)\n[![License](https://poser.pugx.org/mouf/tdbm-hydrator/license)](https://packagist.org/packages/mouf/tdbm-hydrator)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/thecodingmachine/tdbm-hydrator/badges/quality-score.png?b=1.0)](https://scrutinizer-ci.com/g/thecodingmachine/tdbm-hydrator/?branch=1.0)\n[![Build Status](https://travis-ci.org/thecodingmachine/tdbm-hydrator.svg?branch=1.0)](https://travis-ci.org/thecodingmachine/tdbm-hydrator)\n[![Coverage Status](https://coveralls.io/repos/thecodingmachine/tdbm-hydrator/badge.svg?branch=1.0\u0026service=github)](https://coveralls.io/github/thecodingmachine/tdbm-hydrator?branch=1.0)\n\n\nAbout the TDBM hydrator\n=======================\n\nThis package contains an **hydrator**.\nAn **hydrator** is a class that takes an array in parameter and maps it to an object (calling the appropriate getters and setters).\n\nUnlike 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](http://mouf-php.com/packages/mouf/database.tdbm).\n\nNote 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).\n\nInstallation\n============\n\n```\ncomposer require mouf/tdbm-hydrator\n```\n\nUsage\n=====\n\nLet's assume you have a simple `Product` class:\n\n```php\nclass Product\n{\n    private $name;\n    private $price;\n    private $inStock;\n\n    public function __construct(string $name, float $price)\n    {\n        $this-\u003ename = $name;\n        $this-\u003eprice = $price;\n    }\n\n    public function setName(string $name)\n    {\n        $this-\u003ename = $name;\n    }\n\n    public function setPrice(float $price)\n    {\n        $this-\u003eprice = $price;\n    }\n\n    public function setInStock(bool $inStock)\n    {\n        $this-\u003einStock = $inStock;\n    }\n\n    // Let's assume we have getters too...\n}\n```\n\nNow, I have this PHP array I want to turn into an object:\n\n```php\n$productAsArray = [\n    'name' =\u003e 'My product',\n    'price' =\u003e '99',\n    'in_stock' =\u003e true\n]\n```\n\nCreating a new hydrated object\n------------------------------\n\nI can create an object ex-nihilo, using the following code:\n\n```php\n$hydrator = new TdbmHydrator();\n\n$product = $hydrator-\u003ehydrateNewObject([\n    'name' =\u003e 'My product',\n    'price' =\u003e '99',\n    'in_stock' =\u003e true\n], Product::class);\n```\n\nNotice that:\n\n- the `TdbmHydrator` will map each item of the array to the constructor arguments or the setters\n- the `TdbmHydrator` can sort out differences between camel-case and underscored names (for instance, it can map `in_stock` to `setInStock()`)\n\nHydrating an existing object\n----------------------------\n\nI can also fill an existing object with values from an array. In this case, only setters are called:\n\n```php\n$product = new Project('My product', 99);\n\n$hydrator-\u003ehydrateObject([\n    'in_stock' =\u003e true\n], $product);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecodingmachine%2Ftdbm-hydrator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthecodingmachine%2Ftdbm-hydrator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecodingmachine%2Ftdbm-hydrator/lists"}