Blame view

vendor/yiisoft/multiparser/Parser.php 1.99 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()
      {
08aff3b4   Mihail   add TableParser a...
41
  
6215a30d   Mihail   add converter int...
42
          $this->setupConverter();
08aff3b4   Mihail   add TableParser a...
43
  
6215a30d   Mihail   add converter int...
44
45
46
47
      }
  
      protected function setupConverter()
      {
08aff3b4   Mihail   add TableParser a...
48
          if ( $this->has_header_row || $this->keys !== NULL ) {
90ff40df   Mihail   fixed issue with ...
49
50
51
52
              // если у файла есть заголовок, то в результате имеем ассоциативный массив
              $this->converter_conf['hasKey'] = 1;
          }
  
6215a30d   Mihail   add converter int...
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
          $converter = ObjectCreator::build( $this->converter_conf );
          if ( $converter instanceof ConverterInterface ) {
  
              $this->converter = $converter;
  
          }
  
      }
  
      public abstract function read();
  
      /**
       * @param $arr
       * @return mixed
       * преобразовует значения прочитанного массива в нужные типы, согласно конфигурации конвертера
       */
      protected function convert( $arr )
      {
          if ($this->converter !== NULL) {
  
              $arr = $this->converter->convertByConfiguration( $arr, $this->converter_conf );
  
          }
  
  
          return $arr;
  
      }
  }