Blame view

vendor/yiisoft/multiparser/Converter.php 4.26 KB
74072a2a   Mihail   add first version...
1
2
3
4
5
6
7
8
9
  <?php
  /**
  * Created by PhpStorm.
   * User: Cibermag
  * Date: 31.08.2015
  * Time: 12:50
  */
  
  namespace yii\multiparser;
93e39994   Mihail   fixed parser and ...
10
  use common\components\CustomVarDamp;
28253169   Mihail   add converter as ...
11
  use yii\base\Behavior;
74072a2a   Mihail   add first version...
12
13
  
  // класс который содержит преобразователи значений (фильтры) используемые при парсинге
28253169   Mihail   add converter as ...
14
  class Converter extends Behavior
74072a2a   Mihail   add first version...
15
16
  {
  
aa518ad3   Mihail   finishing with co...
17
      const METHOD_PREFIX = 'convertTo';
74072a2a   Mihail   add first version...
18
  
8894c93a   Mihail   add Importers fil...
19
      //public  $configuration = [];
74072a2a   Mihail   add first version...
20
  
8894c93a   Mihail   add Importers fil...
21
      public static function convertToFloat($value)
74072a2a   Mihail   add first version...
22
      {
74072a2a   Mihail   add first version...
23
24
25
26
27
28
29
30
31
32
33
34
35
36
          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;
      }
  
8894c93a   Mihail   add Importers fil...
37
      public static function convertToInteger($value)
74072a2a   Mihail   add first version...
38
39
40
41
42
43
44
45
46
47
48
49
50
51
      {
          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;
      }
  
8894c93a   Mihail   add Importers fil...
52
      public static function convertToString($value)
74072a2a   Mihail   add first version...
53
      {
74072a2a   Mihail   add first version...
54
55
56
57
58
59
60
61
62
63
          $res = '';
          if (is_array($value)) {
  
              $res = Encoder::encodeArray($value);
  
          }elseif ( is_string($value) ) {
  
              $res = Encoder::encodeString($value);
  
          }
74072a2a   Mihail   add first version...
64
65
66
          return $res;
      }
  
74072a2a   Mihail   add first version...
67
68
69
70
71
72
73
74
  
      /**
       * @param $name - имя метода конвертации
       * @param $value - значение на конвертацию
       * @return mixed
       */
      public static function __callStatic( $name, $value )
      {
aa518ad3   Mihail   finishing with co...
75
          $method_name =  self::METHOD_PREFIX . $name;
28253169   Mihail   add converter as ...
76
          if ( method_exists( self::class, $method_name ) ) {
74072a2a   Mihail   add first version...
77
  
aa518ad3   Mihail   finishing with co...
78
              return self::$method_name( $value[0] );
74072a2a   Mihail   add first version...
79
80
81
  
          } else{
              // если такого метода конвертации не предусмотрено, то возвращаем не конвертируя
aa518ad3   Mihail   finishing with co...
82
              return $value[0];
74072a2a   Mihail   add first version...
83
84
85
86
  
          }
      }
  
28253169   Mihail   add converter as ...
87
88
89
90
91
      public function __call($name, $params)
      {
          return self::__callStatic( $name, $params );
      }
  
74072a2a   Mihail   add first version...
92
93
  
      /**
8894c93a   Mihail   add Importers fil...
94
95
       * @param $arr - массив для конвертирования
       * @param $configuration - массив конфигурация конвертирования
74072a2a   Mihail   add first version...
96
97
98
       * @return mixed
       * конвертирует массив по полученным настройкам, вызывая последовательно функции конвертации (указанные в конфигурации)
       */
8894c93a   Mihail   add Importers fil...
99
      public static function convertByConfiguration( $arr, $configuration  )
74072a2a   Mihail   add first version...
100
101
      {
          $result = $arr;
93e39994   Mihail   fixed parser and ...
102
         // \common\components\CustomVarDamp::dumpAndDie( $result );
8894c93a   Mihail   add Importers fil...
103
104
          $hasKey = isset( $configuration['hasKey'] );
          foreach ( $configuration['configuration'] as $key => $value ) {
74072a2a   Mihail   add first version...
105
106
107
108
109
110
111
  
              if ( $hasKey ){
                  //  у нас ассоциативный массив, и мы можем конвертировать каждое значение в отдельности
                  if ( is_array( $value ) ) {
                      foreach ($value as $sub_value) {
                          if (isset($arr[$sub_value])) {
                              // конвертируем только те ячейки которые сопоставлены в прочитанном массиве с колонками в конфигурационном файле
93e39994   Mihail   fixed parser and ...
112
                              $result[$sub_value] = self::$key( $arr[$sub_value] );
74072a2a   Mihail   add first version...
113
114
115
116
117
118
119
                          }
  
                      }
                  } else {
  
                      if (isset($arr[$value])) {
                          // конвертируем только те ячейки которые сопоставлены в прочитанном массиве с колонками в конфигурационном файле
93e39994   Mihail   fixed parser and ...
120
                          $result[$value] = self::$key( $arr[$value] );
74072a2a   Mihail   add first version...
121
122
123
124
125
                      }
  
                  }
  
              } else {
aa518ad3   Mihail   finishing with co...
126
                  // нет заголовка - мы можем конвертировать только строку в целом
74072a2a   Mihail   add first version...
127
128
129
130
131
132
133
134
135
                  $result = self::$key( $arr );
              }
  
          }
  
          return $result;
      }
  
  
d21c5c5f   Mihail   XMLparser - read ...
136
  
74072a2a   Mihail   add first version...
137
  }