예제 #1
0
 /**
  * process
  *
  * @param mixed   $data
  * @param Options $options
  *
  * @return ProcessorResult
  * @throws \Exception
  */
 public function process($data, Options $options)
 {
     $name = $options->get('name', 'default');
     $processors = $options->get('processors', []);
     if (empty($processors)) {
         throw new \Exception('Processors not found in options');
     }
     $results = new ProcessorResult($name, $data, $this, true);
     foreach ($processors as $key => $processorOptionsArray) {
         $processorOptions = $options->createOptions($processorOptionsArray);
         $processorServiceName = $processorOptions->get('processor', null);
         if ($processorServiceName === null) {
             throw new \Exception('Processor not found in options');
         }
         /** @var Processor $processor */
         $processor = $this->getProcessor($processorServiceName);
         // over-ride name
         $processorOptions->set('name', $name);
         $result = $processor->process($data, $processorOptions);
         $data = $result->getValue();
         if (!$result->isValid()) {
             $results->setValid(false);
             //                    self::DEFAULT_CODE,
             //                    $options,
             //                    self::DEFAULT_MESSAGE
             //                );
             foreach ($result->getMessages() as $code => $message) {
                 $results->setMessage($code, $message);
             }
         }
     }
     $results->setValue($data);
     return $results;
 }