Blame view

vendor/yiisoft/multiparser/Converter.php 4.19 KB
74072a2a   Mihail   add first version...
1
2
3
4
5
6
7
8
9
10
11
  <?php
  /**
  * Created by PhpStorm.
   * User: Cibermag
  * Date: 31.08.2015
  * Time: 12:50
  */
  
  namespace yii\multiparser;
  
  // класс который содержит преобразователи значений (фильтры) используемые при парсинге
d21c5c5f   Mihail   XMLparser - read ...
12
  class Converter
74072a2a   Mihail   add first version...
13
14
  {
  
aa518ad3   Mihail   finishing with co...
15
      const METHOD_PREFIX = 'convertTo';
74072a2a   Mihail   add first version...
16
  
aa518ad3   Mihail   finishing with co...
17
      public  $configuration = [];
74072a2a   Mihail   add first version...
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
  
      protected static function convertToFloat($value)
      {
  
          if ($value == '') {
              $value = 0;
          }
          $value = trim(str_replace(",", ".", $value));
          $value = preg_replace("/[^0-9.]+/", "", strtoupper($value));
  
          if ($value == '') {
              return '';
          }
          $value = round( (float)$value, 2 );
  
          return $value;
      }
  
      protected static function convertToInteger($value)
      {
          if ($value == '') {
              $value = 0;
          }
          $value = trim(str_replace(",", ".", $value));
          $value = preg_replace("/[^0-9.]+/", "", strtoupper($value));
          if ($value == '') {
              return '';
          }
          $value = round((int)$value, 2);
  
          return $value;
      }
  
      protected static function convertToString($value)
      {
aa518ad3   Mihail   finishing with co...
53
  
74072a2a   Mihail   add first version...
54
55
56
57
58
59
60
61
62
63
64
65
66
67
          $res = '';
          if (is_array($value)) {
  
              $res = Encoder::encodeArray($value);
  
          }elseif ( is_string($value) ) {
  
              $res = Encoder::encodeString($value);
  
          }
  
          return $res;
      }
  
d21c5c5f   Mihail   XMLparser - read ...
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
  //    protected static function convertToAssocArray($arr)
  //    {
  //
  //        $res = '';
  //        if (is_array($value)) {
  //
  //            $res = Encoder::encodeArray($value);
  //
  //        }elseif ( is_string($value) ) {
  //
  //            $res = Encoder::encodeString($value);
  //
  //        }
  //
  //        return $res;
  //    }
74072a2a   Mihail   add first version...
84
85
86
87
88
89
90
91
  
      /**
       * @param $name - имя метода конвертации
       * @param $value - значение на конвертацию
       * @return mixed
       */
      public static function __callStatic( $name, $value )
      {
aa518ad3   Mihail   finishing with co...
92
93
          $method_name =  self::METHOD_PREFIX . $name;
          if ( method_exists( self::class ,$method_name ) ) {
74072a2a   Mihail   add first version...
94
  
aa518ad3   Mihail   finishing with co...
95
              return self::$method_name( $value[0] );
74072a2a   Mihail   add first version...
96
97
98
  
          } else{
              // если такого метода конвертации не предусмотрено, то возвращаем не конвертируя
aa518ad3   Mihail   finishing with co...
99
              return $value[0];
74072a2a   Mihail   add first version...
100
101
102
103
104
105
106
107
108
109
  
          }
      }
  
  
      /**
       * @param $arr - массив
       * @return mixed
       * конвертирует массив по полученным настройкам, вызывая последовательно функции конвертации (указанные в конфигурации)
       */
aa518ad3   Mihail   finishing with co...
110
      public function convertByConfiguration( $arr  )
74072a2a   Mihail   add first version...
111
112
113
      {
          $result = $arr;
  
aa518ad3   Mihail   finishing with co...
114
115
          $hasKey = isset( $this->configuration['hasKey'] );
          foreach ( $this->configuration as $key => $value ) {
74072a2a   Mihail   add first version...
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
  
              if ( $hasKey ){
                  //  у нас ассоциативный массив, и мы можем конвертировать каждое значение в отдельности
                  if ( is_array( $value ) ) {
                      foreach ($value as $sub_value) {
                          if (isset($arr[$sub_value])) {
                              // конвертируем только те ячейки которые сопоставлены в прочитанном массиве с колонками в конфигурационном файле
                              $result[$arr[$sub_value]] = self::$key( $arr[$sub_value] );
                          }
  
                      }
                  } else {
  
                      if (isset($arr[$value])) {
                          // конвертируем только те ячейки которые сопоставлены в прочитанном массиве с колонками в конфигурационном файле
                          $result[$arr[$value]] = self::$key( $arr[$value] );
                      }
  
                  }
  
              } else {
aa518ad3   Mihail   finishing with co...
137
                  // нет заголовка - мы можем конвертировать только строку в целом
74072a2a   Mihail   add first version...
138
139
140
141
142
143
144
145
146
                  $result = self::$key( $arr );
              }
  
          }
  
          return $result;
      }
  
  
d21c5c5f   Mihail   XMLparser - read ...
147
  
74072a2a   Mihail   add first version...
148
  }