Parser.php 1.35 KB
<?php
/**
 * Created by PhpStorm.
 * User: Cibermag
 * Date: 04.09.2015
 * Time: 18:25
 */

namespace yii\multiparser;

abstract class Parser
{
    public $converter_conf  = [];
    protected $converter = NULL;

    /** @var array - массив с заголовком,
     * */
    public $keys = NULL;
    public $hasHeaderRow = false;

    public function setup()
    {
        $this->setupConverter();
    }

    protected function setupConverter()
    {
        if ($this->hasHeaderRow) {
            // если у файла есть заголовок, то в результате имеем ассоциативный массив
            $this->converter_conf['hasKey'] = 1;
        }

        $converter = ObjectCreator::build( $this->converter_conf );
        if ( $converter instanceof ConverterInterface ) {

            $this->converter = $converter;

        }

    }

    public abstract function read();

    /**
     * @param $arr
     * @return mixed
     * преобразовует значения прочитанного массива в нужные типы, согласно конфигурации конвертера
     */
    protected function convert( $arr )
    {
        if ($this->converter !== NULL) {

            $arr = $this->converter->convertByConfiguration( $arr, $this->converter_conf );

        }


        return $arr;

    }
}