public function testHydrateSuccess() { $object = new Object(); $this->assertEquals(null, $object->property1); $this->assertEquals(null, $object->property2); $this->assertEquals(null, $object->property3); $object = ClassMethods::hydrate(array('property1' => 1, 'property2' => 2, 'property3' => 3), $object); $this->assertEquals(1, $object->property1); $this->assertEquals(2, $object->property2); $this->assertEquals(3, $object->property3); }
/** * Register di services * * @throws \Exception */ public function registerServices() { $di = $this->getDI(); if (isset($this->configuration['services'])) { if (!is_array($this->configuration['services'])) { throw new \Exception('Config[services] must be an array'); } if (count($this->configuration['services']) > 0) { foreach ($this->configuration['services'] as $serviceName => $serviceParameters) { $class = $serviceParameters['class']; $shared = false; $service = false; if (isset($serviceParameters['shared'])) { $shared = (bool) $serviceParameters['shared']; } if (is_callable($class)) { $shared = true; $service = $class($this); } else { if (is_object($class)) { $shared = true; $service = $class; } else { if (isset($serviceParameters['__construct'])) { $shared = true; if (!is_array($serviceParameters)) { throw new \Exception('Parameters for service : "' . $serviceName . '" must be array'); } $reflector = new \ReflectionClass($class); $service = $reflector->newInstanceArgs($serviceParameters['__construct']); } else { if ($shared) { $service = new $class(); } else { $service = $class; } } } } if (isset($serviceParameters['parameters'])) { if ($shared === false) { throw new \Exception('Service: "' . $serviceName . '" with parameters must be shared'); } $service = ClassMethods::hydrate($serviceParameters['parameters'], $service); $di->set($serviceName, $service, $shared); } $di->set($serviceName, $service, $shared); } } } }