コード例 #1
0
ファイル: Pipe.php プロジェクト: virusvn/fusio
 public function handle(Request $request, Parameters $configuration, Context $context)
 {
     $response = $this->processor->execute($configuration->get('source'), $request, $context);
     $visitor = new StdClassSerializeVisitor();
     $traverser = new GraphTraverser();
     $traverser->traverse($response->getBody(), $visitor);
     $importer = $this->importerManager->getImporterByInstance('PSX\\Data\\Record\\Importer\\Record');
     $body = $importer->import(new Record(), $visitor->getObject());
     return $this->processor->execute($configuration->get('destination'), $request->withBody($body), $context);
 }
コード例 #2
0
ファイル: ModelFactory.php プロジェクト: seytar/psx
 public function factory($data)
 {
     if (!$data instanceof \stdClass) {
         throw new RuntimeException('Models must be an object');
     }
     $importer = $this->importerManager->getImporterByInstance('PSX\\Data\\Record\\Importer\\Record');
     $models = new \stdClass();
     foreach ($data as $name => $value) {
         $model = new Model();
         $model = $importer->import($model, $value);
         $model->setId($name);
         $models->{$name} = $model;
     }
     return $models;
 }
コード例 #3
0
ファイル: ObjectFactory.php プロジェクト: seytar/psx
 public function factory($data)
 {
     if ($data instanceof \stdClass) {
         $class = null;
         if (isset($data->objectType) && !empty($data->objectType)) {
             $class = $this->resolveType($data->objectType);
         }
         if ($class !== null && class_exists($class)) {
             $object = new $class();
         } else {
             $object = new Object();
         }
         $importer = $this->importerManager->getImporterByInstance('PSX\\Data\\Record\\Importer\\Record');
         return $importer->import($object, $data);
     } elseif (is_array($data)) {
         $objects = array();
         foreach ($data as $row) {
             $objects[] = $this->factory($row);
         }
         return $objects;
     } else {
         return $data;
     }
 }