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
|
{
|
df629228
Mihail
console csv parsing
|
54
|
$res = $value;
|
74072a2a
Mihail
add first version...
|
55
56
57
58
59
60
61
62
63
|
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;
|
74072a2a
Mihail
add first version...
|
76
|
|
34d480b7
Mihail
temp commit - wor...
|
77
78
|
if ( method_exists( static::class, $method_name ) ) {
return static::$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
|
{
|
8894c93a
Mihail
add Importers fil...
|
101
102
|
$hasKey = isset( $configuration['hasKey'] );
foreach ( $configuration['configuration'] as $key => $value ) {
|
74072a2a
Mihail
add first version...
|
103
104
105
|
if ( $hasKey ){
// у нас ассоциативный массив, и мы можем конвертировать каждое значение в отдельности
if ( is_array( $value ) ) {
|
34d480b7
Mihail
temp commit - wor...
|
106
107
108
|
//если пустой массив то конвертируем всю строку
if (count( $value ) === 0 ){
|
df629228
Mihail
console csv parsing
|
109
|
$arr = self::$key( $arr );
|
34d480b7
Mihail
temp commit - wor...
|
110
111
112
|
continue;
}
// иначе конвертируем каждую ячейку в отдельности
|
74072a2a
Mihail
add first version...
|
113
114
115
|
foreach ($value as $sub_value) {
if (isset($arr[$sub_value])) {
// конвертируем только те ячейки которые сопоставлены в прочитанном массиве с колонками в конфигурационном файле
|
df629228
Mihail
console csv parsing
|
116
|
$arr[$sub_value] = self::$key( $arr[$sub_value] );
|
74072a2a
Mihail
add first version...
|
117
118
119
120
121
122
123
|
}
}
} else {
if (isset($arr[$value])) {
// конвертируем только те ячейки которые сопоставлены в прочитанном массиве с колонками в конфигурационном файле
|
df629228
Mihail
console csv parsing
|
124
125
|
$arr[$value] = self::$key( $arr[$value] );
// CustomVarDamp::dump($result);
|
74072a2a
Mihail
add first version...
|
126
127
128
129
130
|
}
}
} else {
|
aa518ad3
Mihail
finishing with co...
|
131
|
// нет заголовка - мы можем конвертировать только строку в целом
|
df629228
Mihail
console csv parsing
|
132
|
$arr = self::$key( $arr );
|
74072a2a
Mihail
add first version...
|
133
134
135
136
|
}
}
|
df629228
Mihail
console csv parsing
|
137
|
return $arr;
|
74072a2a
Mihail
add first version...
|
138
139
140
|
}
|
d21c5c5f
Mihail
XMLparser - read ...
|
141
|
|
74072a2a
Mihail
add first version...
|
142
|
}
|