Blame view

vendor/yiisoft/multiparser/Parser.php 2.05 KB
6215a30d   Mihail   add converter int...
1
2
3
4
5
6
7
8
9
10
  <?php
  /**
   * Created by PhpStorm.
   * User: Cibermag
   * Date: 04.09.2015
   * Time: 18:25
   */
  
  namespace yii\multiparser;
  
08aff3b4   Mihail   add TableParser a...
11
12
13
14
15
16
  //@todo - заменить read на parse
  //@todo - xml - убрать из названий функций xml и array - это и так понятно
  
  
  use common\components\CustomVarDamp;
  
6215a30d   Mihail   add converter int...
17
18
19
20
21
  abstract class Parser
  {
      public $converter_conf  = [];
      protected $converter = NULL;
  
08aff3b4   Mihail   add TableParser a...
22
23
24
25
26
      /**
       * @var array - результирующий массив с отпарсенными значениями
       */
      protected $result = [];
  
90ff40df   Mihail   fixed issue with ...
27
28
29
      /** @var array - массив с заголовком,
       * */
      public $keys = NULL;
08aff3b4   Mihail   add TableParser a...
30
31
32
      /** @var bool
      имеет ли файл заголовок который будет установлен ключами возвращемого массива*/
      public $has_header_row = false;
90ff40df   Mihail   fixed issue with ...
33
  
3c4b566f   Mihail   add XlsxParser
34
35
36
      /** @var экземляр SplFileObject читаемого файла */
      public $file;
  
08aff3b4   Mihail   add TableParser a...
37
38
  
  
6215a30d   Mihail   add converter int...
39
40
      public function setup()
      {
6215a30d   Mihail   add converter int...
41
          $this->setupConverter();
6215a30d   Mihail   add converter int...
42
43
44
45
      }
  
      protected function setupConverter()
      {
08aff3b4   Mihail   add TableParser a...
46
          if ( $this->has_header_row || $this->keys !== NULL ) {
90ff40df   Mihail   fixed issue with ...
47
48
49
50
              // если у файла есть заголовок, то в результате имеем ассоциативный массив
              $this->converter_conf['hasKey'] = 1;
          }
  
9d9d876f   Mihail   add xlsx parser i...
51
52
53
          if ( $this->converter_conf ) {
              $converter = ObjectCreator::build( $this->converter_conf );
              if ( $converter instanceof ConverterInterface ) {
6215a30d   Mihail   add converter int...
54
  
9d9d876f   Mihail   add xlsx parser i...
55
                  $this->converter = $converter;
6215a30d   Mihail   add converter int...
56
  
9d9d876f   Mihail   add xlsx parser i...
57
              }
6215a30d   Mihail   add converter int...
58
59
          }
  
9d9d876f   Mihail   add xlsx parser i...
60
  
6215a30d   Mihail   add converter int...
61
62
63
64
65
66
67
68
69
70
71
      }
  
      public abstract function read();
  
      /**
       * @param $arr
       * @return mixed
       * преобразовует значения прочитанного массива в нужные типы, согласно конфигурации конвертера
       */
      protected function convert( $arr )
      {
9d9d876f   Mihail   add xlsx parser i...
72
  
6215a30d   Mihail   add converter int...
73
74
75
76
77
78
79
80
81
82
83
          if ($this->converter !== NULL) {
  
              $arr = $this->converter->convertByConfiguration( $arr, $this->converter_conf );
  
          }
  
  
          return $arr;
  
      }
  }