/**
  * @param string $className
  */
 private function loadClassFields($className)
 {
     $fields = Container::instance()->get($className);
     if (!$fields) {
         new $className();
         $fields = Container::instance()->get($className);
     }
     $fields = array_keys($fields);
     $this->fieldsByClassName[$className] = $this->getFieldsVariations($fields);
 }
Ejemplo n.º 2
0
 public function __construct()
 {
     $className = get_class($this);
     if (!Container::instance()->has($className)) {
         Container::instance()->set($className, $this->_setup());
     }
     $this->data = Container::instance()->get($className);
     $this->values = Container::instance()->getValues($className);
     $this->_p = new PrivateFields($this->values, $this->data, $this);
 }
Ejemplo n.º 3
0
 /**
  * @param string $className
  * @return array
  */
 private function getObjectFields($className)
 {
     $setup = Container::instance()->get($className);
     if (!$setup) {
         /** @var LiteObject $instance */
         $instance = new $className();
         $fields = $instance->getPropertyNames();
     } else {
         $fields = array_keys($setup);
     }
     return $fields;
 }
Ejemplo n.º 4
0
 /**
  * @param LiteObject $object
  * @param IMapperCollection $collection
  * @param \stdClass|array|null $value
  * @param MapperLoadHelpers $loaders
  * @param IValuesProcessorContainer $container
  * @return mixed
  */
 private static function getObjectFromData(LiteObject $object, IMapperCollection $collection, $value, MapperLoadHelpers $loaders, IValuesProcessorContainer $container)
 {
     if (is_string($value)) {
         $value = json_decode($value);
     }
     $data = [];
     $className = get_class($object);
     $fieldMapper = $collection->getOrDefault($object);
     $setup = Container::instance()->get(get_class($object));
     $processor = new LoadHelpersProcessor();
     $processor->setLoadersContainer($loaders);
     $value = $processor->preMapProcess($className, $value);
     foreach ($value as $dataName => $dataValue) {
         $fieldName = $fieldMapper->mapToObjectField($dataName, get_class($object));
         if (!$fieldName || !isset($setup[$fieldName])) {
             continue;
         }
         $fieldSetup = $setup[$fieldName];
         if (isset($fieldSetup[SetupFields::INSTANCE_TYPE])) {
             $instanceType = $fieldSetup[SetupFields::INSTANCE_TYPE];
             if ($fieldSetup[SetupFields::TYPE] == VarType::INSTANCE) {
                 $fieldValue = new $instanceType();
                 self::getObjectFromData($fieldValue, $collection, $dataValue, $loaders, $container);
             } else {
                 $fieldValue = [];
                 foreach ($dataValue as $itemKey => $item) {
                     $instance = new $instanceType();
                     self::getObjectFromData($instance, $collection, $item, $loaders, $container);
                     $fieldValue[$itemKey] = $instance;
                 }
             }
         } else {
             $fieldValue = $dataValue;
         }
         $data[$fieldName] = $fieldValue;
     }
     $data = $processor->postMapProcess($className, $data);
     return self::setFields($object, $data, $container);
 }
Ejemplo n.º 5
0
 /**
  * @runInSeparateProcess
  */
 public function test_getValues_FieldWithoutValueNotReturned()
 {
     $data = ['a' => [], 'b' => [SetupFields::VALUE => 2]];
     Container::instance()->set('b', $data);
     $this->assertEquals(['b' => 2], Container::instance()->getValues('b'));
 }
Ejemplo n.º 6
0
 /**
  * @param LiteObject $object
  * @return array
  */
 private static function getObjectSetup(LiteObject $object)
 {
     return Container::instance()->get(get_class($object));
 }