Blame view

vendor/yiisoft/multiparser/Converter.php 4.25 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;
28253169   Mihail   add converter as ...
10
  use yii\base\Behavior;
74072a2a   Mihail   add first version...
11
12
  
  // класс который содержит преобразователи значений (фильтры) используемые при парсинге
28253169   Mihail   add converter as ...
13
  class Converter extends Behavior
74072a2a   Mihail   add first version...
14
15
  {
  
aa518ad3   Mihail   finishing with co...
16
      const METHOD_PREFIX = 'convertTo';
74072a2a   Mihail   add first version...
17
  
8894c93a   Mihail   add Importers fil...
18
      //public  $configuration = [];
74072a2a   Mihail   add first version...
19
  
8894c93a   Mihail   add Importers fil...
20
      public static function convertToFloat($value)
74072a2a   Mihail   add first version...
21
      {
28253169   Mihail   add converter as ...
22
          echo 1;
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
      {
aa518ad3   Mihail   finishing with co...
54
  
28253169   Mihail   add converter as ...
55
  
74072a2a   Mihail   add first version...
56
57
58
59
60
61
62
63
64
65
          $res = '';
          if (is_array($value)) {
  
              $res = Encoder::encodeArray($value);
  
          }elseif ( is_string($value) ) {
  
              $res = Encoder::encodeString($value);
  
          }
74072a2a   Mihail   add first version...
66
67
68
          return $res;
      }
  
74072a2a   Mihail   add first version...
69
70
71
72
73
74
75
76
  
      /**
       * @param $name - имя метода конвертации
       * @param $value - значение на конвертацию
       * @return mixed
       */
      public static function __callStatic( $name, $value )
      {
aa518ad3   Mihail   finishing with co...
77
          $method_name =  self::METHOD_PREFIX . $name;
28253169   Mihail   add converter as ...
78
          if ( method_exists( self::class, $method_name ) ) {
74072a2a   Mihail   add first version...
79
  
aa518ad3   Mihail   finishing with co...
80
              return self::$method_name( $value[0] );
74072a2a   Mihail   add first version...
81
82
83
  
          } else{
              // если такого метода конвертации не предусмотрено, то возвращаем не конвертируя
aa518ad3   Mihail   finishing with co...
84
              return $value[0];
74072a2a   Mihail   add first version...
85
86
87
88
  
          }
      }
  
28253169   Mihail   add converter as ...
89
90
91
92
93
      public function __call($name, $params)
      {
          return self::__callStatic( $name, $params );
      }
  
74072a2a   Mihail   add first version...
94
95
  
      /**
8894c93a   Mihail   add Importers fil...
96
97
       * @param $arr - массив для конвертирования
       * @param $configuration - массив конфигурация конвертирования
74072a2a   Mihail   add first version...
98
99
100
       * @return mixed
       * конвертирует массив по полученным настройкам, вызывая последовательно функции конвертации (указанные в конфигурации)
       */
8894c93a   Mihail   add Importers fil...
101
      public static function convertByConfiguration( $arr, $configuration  )
74072a2a   Mihail   add first version...
102
103
      {
          $result = $arr;
8894c93a   Mihail   add Importers fil...
104
105
106
          //\common\components\CustomVarDamp::dumpAndDie($configuration);
          $hasKey = isset( $configuration['hasKey'] );
          foreach ( $configuration['configuration'] as $key => $value ) {
74072a2a   Mihail   add first version...
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
  
              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...
128
                  // нет заголовка - мы можем конвертировать только строку в целом
74072a2a   Mihail   add first version...
129
130
131
132
133
134
135
136
137
                  $result = self::$key( $arr );
              }
  
          }
  
          return $result;
      }
  
  
d21c5c5f   Mihail   XMLparser - read ...
138
  
74072a2a   Mihail   add first version...
139
  }