Blame view

lib/ParserHandler.php 2.64 KB
8e128526   Mihail   add xlsx parser
1
2
  <?php
  
d0261fd1   Mihail   fixed namespace i...
3
  namespace yii\multiparser;
8e128526   Mihail   add xlsx parser
4
  
8e128526   Mihail   add xlsx parser
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  
  class ParserHandler
  {
      //@todo - добавить комменты на анг язе (ошибки выкидывать тоже на англ яз.)
      //@todo - сделать универсальную обработку ошибок
      //@todo - возможно отказаться от YiiParserHandler
      const DEFAULT_MODE = 'web';
      /** @var string */
      protected $filePath;
  
      /** @var string */
      protected $configuration = [];
      /** @var string */
      protected $custom_configuration = [];
  
      /** @var instance of SplFileObject */
      protected $fileObject;
  
      /** @var string - extension of file $filePath */
      protected $extension;
  
      /** @var string - */
      protected $mode;
  
      /** @var string - */
      protected $options;
  
      /**
       * @param string first line in file for parsing
       */
      public function setup($filePath, $options = [])
      {
          $this->filePath = $filePath;
          if (isset($options['mode'])) {
  
              $this->mode = $options['mode'];
              unset($options['mode']);
  
          } else {
  
              $this->mode = self::DEFAULT_MODE;
  
          }
  
          $this->options = $options;
  
          $this->fileObject = new \SplFileObject($this->filePath, 'r');
  
          $options['file'] = $this->fileObject;
          $this->extension = $this->fileObject->getExtension();
  
          $this->custom_configuration = $this->getCustomConfiguration($this->extension, $this->mode);
          $this->custom_configuration = array_merge_recursive($this->custom_configuration, $options);
  
      }
  
      public function run()
      {
cd8b9f70   Mihail   add cleanUp metho...
63
          $parser = $this->createObjectByConfiguration( $this->custom_configuration );
8e128526   Mihail   add xlsx parser
64
  
cd8b9f70   Mihail   add cleanUp metho...
65
66
          $parser->setup();
          $result = $parser->read();
8e128526   Mihail   add xlsx parser
67
  
cd8b9f70   Mihail   add cleanUp metho...
68
          unset($this->fileObject);
8e128526   Mihail   add xlsx parser
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
          return $result;
      }
  
      public function getCustomConfiguration($extension, $parameter)
      {
          if (!count($this->configuration)) {
              $this->setConfiguration(require(__DIR__ . '/config.php'));
          }
  
          if (!isset($this->configuration[$extension])) {
              throw new \ErrorException("Parser do not maintain file with extension  {$extension}");
          }
          if (!isset($this->configuration[$extension][$parameter])) {
              throw new \ErrorException("Parser configurator do not have settings for {$parameter} parameter");
          }
  
          return $this->configuration[$extension][$parameter];
      }
  
      public function setConfiguration($configuration)
      {
          $this->configuration = $configuration;
      }
  
      protected function createObjectByConfiguration($configuration)
      {
          return ObjectCreator::build($configuration);
      }
cd8b9f70   Mihail   add cleanUp metho...
97
98
99
100
  
  
  
  
8e128526   Mihail   add xlsx parser
101
  }