public function testConstructor()
 {
     $descriptor = ObjectDescriberFactory::create('PowerLinks\\OpenRtb\\BidRequest\\BidRequest');
     $this->assertEquals('PowerLinks\\OpenRtb\\BidRequest\\BidRequest', $descriptor->getClassName());
     $this->assertEquals('PowerLinks\\OpenRtb\\BidRequest', $descriptor->getNamespace());
     $this->assertEquals(16, $descriptor->properties->count());
     $this->assertInstanceOf('Traversable', $descriptor->properties);
     foreach ($descriptor->properties as $propertyName => $property) {
         $this->assertTrue(is_string($propertyName));
         $this->assertEquals($propertyName, $property->get('name'));
         $this->assertInstanceOf('PowerLinks\\OpenRtb\\Tools\\ObjectAnalyzer\\AnnotationsBag', $property);
     }
     $this->assertTrue($descriptor->properties->get('id')->isRequired());
     $this->assertFalse($descriptor->properties->get('id')->isObject());
     $this->assertEquals('string', $descriptor->properties->get('id')->get('var'));
     $this->assertInstanceOf('Traversable', $descriptor->methods);
     $this->assertTrue($descriptor->methods->has('setId'));
     $this->assertTrue($descriptor->methods->has('getId'));
     $this->assertTrue($descriptor->methods->get('setId'));
     $this->assertTrue($descriptor->methods->get('getId'));
     $this->assertTrue($descriptor->methods->has('getArrayFromObject'));
     $this->assertFalse($descriptor->methods->get('getArrayFromObject'));
 }
Example #2
0
 /**
  * @param array $data
  * @param $object
  * @return mixed
  * @throws \Exception
  */
 public static function hydrate(array $data, $object)
 {
     $objectDescriptor = ObjectDescriberFactory::create($object);
     $data = self::checkFirstArrayKey($data, $objectDescriptor);
     foreach ($data as $key => $value) {
         if (is_array($value) && $objectDescriptor->properties->has($key) && $objectDescriptor->properties->get($key)->isObject() && $objectDescriptor->properties->get($key)->get('var') == 'ArrayCollection') {
             self::set($object, $key, self::getDependencyObject($objectDescriptor, $key));
             $method = 'add' . ucfirst($key);
             if (!$objectDescriptor->methods->has($method) || !$objectDescriptor->methods->get($method)) {
                 throw new \Exception(sprintf('Method %s does not exist', $method));
             }
             foreach ($value as $item) {
                 $object->{$method}(self::hydrate($item, self::getDependencyObject($objectDescriptor, ucfirst($key), false)));
             }
         } elseif (is_array($value) && $objectDescriptor->properties->has($key) && $objectDescriptor->properties->get($key)->isObject()) {
             self::set($object, $key, self::hydrate($value, self::getDependencyObject($objectDescriptor, $key)));
         } elseif ($objectDescriptor->properties->has($key)) {
             self::set($object, $key, $value);
         } elseif ($object instanceof \PowerLinks\OpenRtb\Tools\Classes\Ext) {
             $object->set($key, $value);
         }
     }
     return $object;
 }
Example #3
0
 /**
  * @return \PowerLinks\OpenRtb\Tools\ObjectAnalyzer\ParametersBag
  * @throws \Exception
  */
 private function getProperties()
 {
     $objectDescriptor = ObjectDescriberFactory::create(__CLASS__);
     return $objectDescriptor->properties;
 }