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;
|
d3cf6647
Mihail
add multiply pric...
|
12
|
use yii\base\ErrorException;
|
74072a2a
Mihail
add first version...
|
13
14
|
// класс который содержит преобразователи значений (фильтры) используемые при парсинге
|
28253169
Mihail
add converter as ...
|
15
|
class Converter extends Behavior
|
74072a2a
Mihail
add first version...
|
16
17
|
{
|
aa518ad3
Mihail
finishing with co...
|
18
|
const METHOD_PREFIX = 'convertTo';
|
74072a2a
Mihail
add first version...
|
19
|
|
8894c93a
Mihail
add Importers fil...
|
20
|
//public $configuration = [];
|
74072a2a
Mihail
add first version...
|
21
|
|
8894c93a
Mihail
add Importers fil...
|
22
|
public static function convertToFloat($value)
|
74072a2a
Mihail
add first version...
|
23
|
{
|
74072a2a
Mihail
add first version...
|
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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...
|
38
|
public static function convertToInteger($value)
|
74072a2a
Mihail
add first version...
|
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
{
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;
}
|
3da8b25f
Mihail
fixed issues with...
|
53
|
public static function convertToEncode($value)
|
74072a2a
Mihail
add first version...
|
54
|
{
|
df629228
Mihail
console csv parsing
|
55
|
$res = $value;
|
74072a2a
Mihail
add first version...
|
56
57
58
59
60
61
62
63
64
|
if (is_array($value)) {
$res = Encoder::encodeArray($value);
}elseif ( is_string($value) ) {
$res = Encoder::encodeString($value);
}
|
74072a2a
Mihail
add first version...
|
65
66
67
|
return $res;
}
|
74072a2a
Mihail
add first version...
|
68
69
70
71
72
73
74
75
|
/**
* @param $name - имя метода конвертации
* @param $value - значение на конвертацию
* @return mixed
*/
public static function __callStatic( $name, $value )
{
|
aa518ad3
Mihail
finishing with co...
|
76
|
$method_name = self::METHOD_PREFIX . $name;
|
74072a2a
Mihail
add first version...
|
77
|
|
34d480b7
Mihail
temp commit - wor...
|
78
79
|
if ( method_exists( static::class, $method_name ) ) {
return static::$method_name( $value[0] );
|
74072a2a
Mihail
add first version...
|
80
81
82
|
} else{
// если такого метода конвертации не предусмотрено, то возвращаем не конвертируя
|
aa518ad3
Mihail
finishing with co...
|
83
|
return $value[0];
|
74072a2a
Mihail
add first version...
|
84
85
86
87
|
}
}
|
28253169
Mihail
add converter as ...
|
88
89
90
91
92
|
public function __call($name, $params)
{
return self::__callStatic( $name, $params );
}
|
74072a2a
Mihail
add first version...
|
93
94
|
/**
|
8894c93a
Mihail
add Importers fil...
|
95
96
|
* @param $arr - массив для конвертирования
* @param $configuration - массив конфигурация конвертирования
|
74072a2a
Mihail
add first version...
|
97
98
99
|
* @return mixed
* конвертирует массив по полученным настройкам, вызывая последовательно функции конвертации (указанные в конфигурации)
*/
|
8894c93a
Mihail
add Importers fil...
|
100
|
public static function convertByConfiguration( $arr, $configuration )
|
74072a2a
Mihail
add first version...
|
101
|
{
|
d3cf6647
Mihail
add multiply pric...
|
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
if( $hasKey = isset( $configuration['hasKey'] ) )
unset( $configuration['hasKey'] );
if ( isset( $configuration['configuration'] ) ) {
$arr_config = $configuration['configuration'];
unset( $configuration['configuration'] );
} else{
throw new ErrorException('Не указан обязательный параметр конфигурационного файла - converter_conf[configuration]');
}
// проставим аттрибуды из конфига{}{}
foreach ($configuration as $key_setting => $setting) {
if( property_exists( static::class, $key_setting ) )
static::$$key_setting = $setting;
}
foreach ( $arr_config as $key => $value ) {
|
74072a2a
Mihail
add first version...
|
119
120
121
|
if ( $hasKey ){
// у нас ассоциативный массив, и мы можем конвертировать каждое значение в отдельности
if ( is_array( $value ) ) {
|
34d480b7
Mihail
temp commit - wor...
|
122
123
124
|
//если пустой массив то конвертируем всю строку
if (count( $value ) === 0 ){
|
df629228
Mihail
console csv parsing
|
125
|
$arr = self::$key( $arr );
|
34d480b7
Mihail
temp commit - wor...
|
126
127
128
|
continue;
}
// иначе конвертируем каждую ячейку в отдельности
|
74072a2a
Mihail
add first version...
|
129
130
131
|
foreach ($value as $sub_value) {
if (isset($arr[$sub_value])) {
// конвертируем только те ячейки которые сопоставлены в прочитанном массиве с колонками в конфигурационном файле
|
df629228
Mihail
console csv parsing
|
132
|
$arr[$sub_value] = self::$key( $arr[$sub_value] );
|
74072a2a
Mihail
add first version...
|
133
134
135
136
137
138
139
|
}
}
} else {
if (isset($arr[$value])) {
// конвертируем только те ячейки которые сопоставлены в прочитанном массиве с колонками в конфигурационном файле
|
df629228
Mihail
console csv parsing
|
140
141
|
$arr[$value] = self::$key( $arr[$value] );
// CustomVarDamp::dump($result);
|
74072a2a
Mihail
add first version...
|
142
143
144
145
146
|
}
}
} else {
|
aa518ad3
Mihail
finishing with co...
|
147
|
// нет заголовка - мы можем конвертировать только строку в целом
|
df629228
Mihail
console csv parsing
|
148
|
$arr = self::$key( $arr );
|
74072a2a
Mihail
add first version...
|
149
150
151
152
|
}
}
|
df629228
Mihail
console csv parsing
|
153
|
return $arr;
|
74072a2a
Mihail
add first version...
|
154
155
156
|
}
|
d21c5c5f
Mihail
XMLparser - read ...
|
157
|
|
74072a2a
Mihail
add first version...
|
158
|
}
|