Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
 /**
  * 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);
             }
         }
     }
 }