Skip to content

Instantly share code, notes, and snippets.

@ChubV ChubV/hydrate.php
Last active Aug 27, 2019

Embed
What would you like to do?
<?php
class Foo
{
private $foo;
private $bar;
private $baz;
}
$hydrator = function(array $data) {
$this->foo = $data['a'];
$this->bar = $data['b'];
$this->baz = $data['c'];
};
$hydrated = new Foo();
$data = array('a' => 1, 'b' => 2, 'c' => 3);
$aHydrator = $hydrator->bindTo($hydrated, $hydrated);
$aHydrator($data);
var_dump($hydrated);
<?php
$iterations = 100000;
class A {private $a; private $b; private $c;}
$hydrator = function(array $data) {
$this->a = $data['a'];
$this->b = $data['b'];
$this->c = $data['c'];
};
$data = array('a' => 1, 'b' => 2, 'c' => 3);
$a = new A();
for ($i = 0; $i < $iterations; $i++) {
$aHydrator = $hydrator->bindTo($a, $a);
$aHydrator($data);
}
@SpiLLeR

This comment has been minimized.

Copy link

SpiLLeR commented Jan 18, 2016

Interesting example.
Small fix: duplication variable $data in hydrate.php

@ChubV

This comment has been minimized.

Copy link
Owner Author

ChubV commented Jan 23, 2016

@SpiLLeR, thank you, edited

@jkufner

This comment has been minimized.

Copy link

jkufner commented Aug 27, 2019

Thanks, this is an interesting idea.

It seems that Closure::call() might be a better way to do this trick.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.