d1faa09b
Mihail
4 and 5 chapter i...
|
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
Конфигурационный файл представляет собой описание многомерного массива настроек (пример - examples\config.php).
4.1. Элементами первого уровня массива указываются расширения файлов, с которыми компонент будет работать. Для каждого расширения определяется массив настроек парсинга данного типа файлов. Пакет поддерживает определение нескольких сценариев (несколько параллельных настроек) для одного типа файлов.
4.2. Сценарии указываются на втором уровне. Так в примере к пакету используются два сценария – template – для файлов приложенных к пакету, и custom – для файлов выбранных пользователем.
Также на этом уровне можно определить параметры, которые будут доступны для данного расширения. В примере используется эта возможность для определения колонок выбора соответствия отпарсенных колонок с эталонными колонками (параметр - basic_column). Вызов этого параметра можно осуществить следующим образом:
```php
Yii::$app->multiparser->getConfiguration($file_extension, 'basic_column');
```
4.3. На третьем указываются настройки парсера в виде конфигурационного массива YII.
Данный массив имеет один обязательный элемент с ключем – class, в котором указывается имя парсера, который будет обрабатывать данный тип файлов. Таким образом можно указать свой класс парсера, или использовать классы входящие в пакет, например для csv это класс - 'yii\multiparser\CsvParser'.
При использовании встроенного класса (или наследуемые от него) в данном массиве можно установить следующие атрибуты в качестве настроек:
4.3.1. converter_conf – array. Настройки конвертера. Детально описано в п.5.
4.3.2. keys – array. В этом параметре можно назначить имена колонкам файла. Например:
```php
'keys' => [
0 => 'Description',
1 => 'Article',
2 => 'Price',
3 => 'Brand',
4 => 'Count',
]
```
При такой настройке результирующий массив будет ассоциативным, где в колонке массива с ключем ‘'Brand'’ – будут значения из четвертой колонки файла.
4.3.3. has_header_row – bolean. Признак, имеет ли файл заголовок в первой значимой строке, если true - первая значимая строка будет пропущена и не попадет в результирующий массив. По умолчанию – true.
4.3.4. first_line – integer. Номер строки с которой начинается парсинг. Если установлен аттрибут has_header_row, тогда следующая строка за данной, будет считаться заголовком и будет пропущена. По умолчанию – 0.
4.3.5. last_line – integer. Номер строки по которую будет произведен парсинг. Если = 0, парсинг будет производится до конца файла. По умолчанию – 0.
4.3.6. min_column_quantity - integer. Количество заполненных колонок строки начала файла. Если строка имеет не меньше заполненных колонок чем указано в параметре, данная строка считается значимой и с неё начинается парсинг файла. Используется при старте парсинга для определения начала файла. Имеет смысл только при first_line =0. По умолчанию – 5. То есть парсинг начнется с первой строки файла, которая имеет не меньше 5 колонок с данными.
4.3.7. empty_lines_quantity - integer. Количество пустых строк, что бы определить конец файла. Имеет смысл только при first_line =0. По умолчанию – 3. То есть парсинг закончится на строке, после которой встретятся три пустых строки.
###5. Конвертер.###
В состав пакета входит конвертер который позволяет осуществлять преобразования прочитанных данных в процессе парсинга. Таким образом можно получить очищенные и преобразованные данные в результирующем массиве. Простейшим примером, такого преобразования может служит смена кодировки. По умолчанию конвертер входящий в пакет осуществляет смену кодировки с 'windows-1251' в 'UTF-8'.
Конвертер представляет собой отдельный класс с статическими методами конвертации значений. Что бы подключить конвертер к парсеру, необходимо заполнить свойство конфигурационного файла converter_conf.
Данное свойство является конфигурационным массивом с двумя обязательными элементами. Элемент с ключем class, в котором необходимо указать класс используемого конвертера. И Элемент с ключем configuration – массив ключи которого описывают методы преобразования, а значения – имена колонок файла для преобразования.
Конвертер входящий в пакет содержит следующие методы преобразования:
5.1. Encode – метод меняет кодировку с 'windows-1251' в 'UTF-8'.
5.2. String – метод очищает строку от специальных символов. А именно, удаляются - !, @, #, $, %, ^, &, *, (, ), _, +, =, -, ~, `, ", ', №, %, ;, :, [, ], {, }, *, ?, /, \ , |, ., ',' , <, >, \.
5.3. Integer – метод преобразует строку в Integer.
5.4. float – метод преобразует строку в float.
Конкретные значения для конвертации есть смысл указывать только если в настройках парсера указаны ключи соответствия (свойство key см. 4.3.2). Иначе необходимо указать в качестве значения – пустой массив, что будет означать применение данного метода для всех колонок файла.
Допустимо указывать колонки для конвертации тремя способами:
```php
'configuration' => ['encode' => [], // - конвертация всех колонок файла методом 'encode'
'string' => ['Description', 'Brand'], - конвертация только двух колонок методом 'string'
'integer' => 'Count' – конвертация колонки 'Count' методом 'integer'
]
```
Расширение конвертера.
Для добавления своих методов преобразования необходимо создать свой класс конвертера. Это можно сделать путем наследования от базового класса конвертера или реализовав интерфейс ConverterInterface. В данном классе реализовать статические методы преобразования.
|