Blame view

lib/YiiParserHandler.php 2.04 KB
e9ecd908   Mihail   init commit
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
  <?php
  /**
   * Created by PhpStorm.
   * User: Cibermag
   * Date: 07.09.2015
   * Time: 15:53
   */
  
  namespace yii\multiparser;
  
  
  use common\components\CustomVarDamp;
  
  class YiiParserHandler extends ParserHandler{
  
  
      /**
       * @param $filePath
       * @param array $options
       * проверяет читабенльность переданного файла, а также наличие настроек парсера в конфигурационном файле для данного типа файла
       */
      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 = \Yii::$app->multiparser->getConfiguration($this->extension, $this->mode);
              $this->configuration = array_merge_recursive ($this->configuration, $options);
          } catch (\ErrorException $e) {
              echo $e->getMessage();
              return [];
          }
  
      }
  
      public function run()
      {
  
          $result = [];
  
          // \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;
      }
  
  }