Blame view

vendor/yiisoft/multiparser/ParserHandler.php 2.13 KB
036717a1   Mihail   add error excepti...
1
2
3
4
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
63
64
65
66
67
68
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
  <?php
  
  namespace yii\multiparser;
  
  use Yii;
  
  class ParserHandler
  {
  
      const DEFAULT_MODE = 'web';
      /** @var string */
      protected $filePath;
  
      /** @var string */
      protected $configuration;
  
      /** @var instance of SplFileObject */
      protected $fileObject;
  
      /** @var string - extension of file $filePath */
      protected $extension;
  
      /** @var string - extension of file $filePath */
      protected $mode;
  
      /** @var string - extension of file $filePath */
      protected $options;
  
      /**
       * @param string first line in file for parsing
       */
      public function __construct($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;
  
          try {
              $this->fileObject = new \SplFileObject($this->filePath, 'r');
          } catch (\ErrorException $e) {
              //  Yii::warning("Ошибка открытия файла {$this->filePath}");
              echo "Ошибка открытия файла {$this->filePath}";
              return [];
          }
  
          $options['file'] = $this->fileObject;
          $this->extension = $this->fileObject->getExtension();
  
          try {
              $this->configuration = ParserConfigurator::getConfiguration($this->extension, $this->mode);
              $this->configuration = array_merge($this->configuration, $options);
  
          } catch (\ErrorException $e) {
              echo $e->getMessage();
              return [];
          }
  
      }
  
      public function run()
      {
  
          $result = [];
          // @todo - rewrite to universal manner
         // \common\components\CustomVarDamp::dumpAndDie($this);
          if (count($this->configuration)) {
              $parser = Yii::createObject($this->configuration);
  
              try {
  
                  $parser->setup();
                  $result = $parser->read();
  
              } catch (\ErrorException $e) {
  
                  echo $e->getMessage();
  
              }
  
          }
  
          return $result;
      }
  }