Commit 221da14e7555f531c3ed670becdf127cb8273514
1 parent
cd8b9f70
change SplFileObject om fopen
Showing
8 changed files
with
41 additions
and
33 deletions
Show diff stats
lib/CsvParser.php
| @@ -22,9 +22,9 @@ class CsvParser extends TableParser | @@ -22,9 +22,9 @@ class CsvParser extends TableParser | ||
| 22 | public function setup() | 22 | public function setup() |
| 23 | { | 23 | { |
| 24 | 24 | ||
| 25 | - $this->file->setCsvControl($this->delimiter); | ||
| 26 | - $this->file->setFlags(\SplFileObject::READ_CSV); | ||
| 27 | - $this->file->setFlags(\SplFileObject::SKIP_EMPTY); | 25 | +// $this->file->setCsvControl($this->delimiter); |
| 26 | +// $this->file->setFlags(\SplFileObject::READ_CSV); | ||
| 27 | +// $this->file->setFlags(\SplFileObject::SKIP_EMPTY); | ||
| 28 | 28 | ||
| 29 | parent::setup(); | 29 | parent::setup(); |
| 30 | 30 | ||
| @@ -42,7 +42,7 @@ class CsvParser extends TableParser | @@ -42,7 +42,7 @@ class CsvParser extends TableParser | ||
| 42 | 42 | ||
| 43 | protected function readRow( ) | 43 | protected function readRow( ) |
| 44 | { | 44 | { |
| 45 | - $this->row = $this->file->fgetcsv(); | 45 | + $this->row = fgetcsv( $this->file, 0, $this->delimiter ); |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | protected function isEmptyRow(){ | 48 | protected function isEmptyRow(){ |
lib/Parser.php
| @@ -12,13 +12,17 @@ namespace yii\multiparser; | @@ -12,13 +12,17 @@ namespace yii\multiparser; | ||
| 12 | //@todo - xml - убрать из названий функций xml и array - это и так понятно | 12 | //@todo - xml - убрать из названий функций xml и array - это и так понятно |
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | +use common\components\CustomVarDamp; | ||
| 16 | + | ||
| 15 | abstract class Parser | 17 | abstract class Parser |
| 16 | { | 18 | { |
| 17 | public $converter_conf = []; | 19 | public $converter_conf = []; |
| 18 | protected $converter = NULL; | 20 | protected $converter = NULL; |
| 19 | 21 | ||
| 20 | - /** @var экземляр SplFileObject читаемого файла */ | 22 | + /** @var file-resource читаемого файла */ |
| 21 | public $file; | 23 | public $file; |
| 24 | + /** @var string путь читаемого файла */ | ||
| 25 | + public $file_path; | ||
| 22 | 26 | ||
| 23 | /** | 27 | /** |
| 24 | * @var array - результирующий массив с отпарсенными значениями | 28 | * @var array - результирующий массив с отпарсенными значениями |
| @@ -90,10 +94,12 @@ abstract class Parser | @@ -90,10 +94,12 @@ abstract class Parser | ||
| 90 | 94 | ||
| 91 | protected function cleanUp( ) | 95 | protected function cleanUp( ) |
| 92 | { | 96 | { |
| 97 | + | ||
| 93 | unset( $this->file ); | 98 | unset( $this->file ); |
| 94 | unset( $this->converter ); | 99 | unset( $this->converter ); |
| 95 | unset( $this->converter_conf ); | 100 | unset( $this->converter_conf ); |
| 96 | 101 | ||
| 102 | + | ||
| 97 | } | 103 | } |
| 98 | 104 | ||
| 99 | 105 |
lib/ParserHandler.php
| @@ -3,24 +3,25 @@ | @@ -3,24 +3,25 @@ | ||
| 3 | namespace yii\multiparser; | 3 | namespace yii\multiparser; |
| 4 | 4 | ||
| 5 | 5 | ||
| 6 | +use common\components\CustomVarDamp; | ||
| 7 | + | ||
| 6 | class ParserHandler | 8 | class ParserHandler |
| 7 | { | 9 | { |
| 8 | //@todo - добавить комменты на анг язе (ошибки выкидывать тоже на англ яз.) | 10 | //@todo - добавить комменты на анг язе (ошибки выкидывать тоже на англ яз.) |
| 9 | //@todo - сделать универсальную обработку ошибок | 11 | //@todo - сделать универсальную обработку ошибок |
| 10 | //@todo - возможно отказаться от YiiParserHandler | 12 | //@todo - возможно отказаться от YiiParserHandler |
| 11 | const DEFAULT_MODE = 'web'; | 13 | const DEFAULT_MODE = 'web'; |
| 12 | - /** @var string */ | ||
| 13 | - protected $filePath; | 14 | + |
| 14 | 15 | ||
| 15 | /** @var string */ | 16 | /** @var string */ |
| 16 | protected $configuration = []; | 17 | protected $configuration = []; |
| 17 | /** @var string */ | 18 | /** @var string */ |
| 18 | protected $custom_configuration = []; | 19 | protected $custom_configuration = []; |
| 19 | 20 | ||
| 20 | - /** @var instance of SplFileObject */ | ||
| 21 | - protected $fileObject; | 21 | + /** @var file handle */ |
| 22 | + protected $file; | ||
| 22 | 23 | ||
| 23 | - /** @var string - extension of file $filePath */ | 24 | + /** @var string - extension of file $file_path */ |
| 24 | protected $extension; | 25 | protected $extension; |
| 25 | 26 | ||
| 26 | /** @var string - */ | 27 | /** @var string - */ |
| @@ -32,9 +33,9 @@ class ParserHandler | @@ -32,9 +33,9 @@ class ParserHandler | ||
| 32 | /** | 33 | /** |
| 33 | * @param string first line in file for parsing | 34 | * @param string first line in file for parsing |
| 34 | */ | 35 | */ |
| 35 | - public function setup($filePath, $options = []) | 36 | + public function setup($file_path, $options = []) |
| 36 | { | 37 | { |
| 37 | - $this->filePath = $filePath; | 38 | + //$this->file_path = $file_path; |
| 38 | if (isset($options['mode'])) { | 39 | if (isset($options['mode'])) { |
| 39 | 40 | ||
| 40 | $this->mode = $options['mode']; | 41 | $this->mode = $options['mode']; |
| @@ -47,12 +48,10 @@ class ParserHandler | @@ -47,12 +48,10 @@ class ParserHandler | ||
| 47 | } | 48 | } |
| 48 | 49 | ||
| 49 | $this->options = $options; | 50 | $this->options = $options; |
| 50 | - | ||
| 51 | - $this->fileObject = new \SplFileObject($this->filePath, 'r'); | ||
| 52 | - | ||
| 53 | - $options['file'] = $this->fileObject; | ||
| 54 | - $this->extension = $this->fileObject->getExtension(); | ||
| 55 | - | 51 | + $this->file = fopen($file_path, 'r'); |
| 52 | + $options['file'] = $this->file; | ||
| 53 | + $options['file_path'] = $file_path; | ||
| 54 | + $this->extension = pathinfo( $file_path, PATHINFO_EXTENSION ); | ||
| 56 | $this->custom_configuration = $this->getCustomConfiguration($this->extension, $this->mode); | 55 | $this->custom_configuration = $this->getCustomConfiguration($this->extension, $this->mode); |
| 57 | $this->custom_configuration = array_merge_recursive($this->custom_configuration, $options); | 56 | $this->custom_configuration = array_merge_recursive($this->custom_configuration, $options); |
| 58 | 57 | ||
| @@ -65,7 +64,9 @@ class ParserHandler | @@ -65,7 +64,9 @@ class ParserHandler | ||
| 65 | $parser->setup(); | 64 | $parser->setup(); |
| 66 | $result = $parser->read(); | 65 | $result = $parser->read(); |
| 67 | 66 | ||
| 68 | - unset($this->fileObject); | 67 | + unset($parser); |
| 68 | + fclose( $this->file ); | ||
| 69 | + | ||
| 69 | return $result; | 70 | return $result; |
| 70 | } | 71 | } |
| 71 | 72 |
lib/TableParser.php
| @@ -160,7 +160,7 @@ abstract class TableParser extends Parser { | @@ -160,7 +160,7 @@ abstract class TableParser extends Parser { | ||
| 160 | 160 | ||
| 161 | protected function filterRow(){ | 161 | protected function filterRow(){ |
| 162 | // если есть заголовок - все значения нужны, не фильтруем | 162 | // если есть заголовок - все значения нужны, не фильтруем |
| 163 | - if ( $this->has_header_row || $this->row === NULL ) { | 163 | + if ( $this->has_header_row || !is_array( $this->row ) ) { |
| 164 | return; | 164 | return; |
| 165 | } | 165 | } |
| 166 | $this->row = array_filter( $this->row, function($val){ | 166 | $this->row = array_filter( $this->row, function($val){ |
lib/XlsxParser.php
| @@ -86,12 +86,13 @@ class XlsxParser extends TableParser { | @@ -86,12 +86,13 @@ class XlsxParser extends TableParser { | ||
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | $zip = new \ZipArchive; | 88 | $zip = new \ZipArchive; |
| 89 | - if ( $zip->open( $this->file->getPathname() ) === TRUE ) { | 89 | + if ( $zip->open( $this->file_path ) === TRUE ) { |
| 90 | $zip->extractTo( $this->path_for_extract_files . '/' ); | 90 | $zip->extractTo( $this->path_for_extract_files . '/' ); |
| 91 | $zip->close(); | 91 | $zip->close(); |
| 92 | } else { | 92 | } else { |
| 93 | throw new \Exception( 'Ошибка чтения xlsx файла' ); | 93 | throw new \Exception( 'Ошибка чтения xlsx файла' ); |
| 94 | } | 94 | } |
| 95 | + unset($zip); | ||
| 95 | } | 96 | } |
| 96 | 97 | ||
| 97 | protected function readSheets () | 98 | protected function readSheets () |
lib/XmlParser.php
| @@ -15,8 +15,8 @@ class XmlParser extends Parser{ | @@ -15,8 +15,8 @@ class XmlParser extends Parser{ | ||
| 15 | 15 | ||
| 16 | public function read() | 16 | public function read() |
| 17 | { | 17 | { |
| 18 | - $file = $this->file; | ||
| 19 | - $result = $this->xmlToArray( $file->getPathname() ); | 18 | + //$file = $this->file; |
| 19 | + $result = $this->xmlToArray( ); | ||
| 20 | 20 | ||
| 21 | if ( isset($this->node) ) { | 21 | if ( isset($this->node) ) { |
| 22 | 22 | ||
| @@ -36,13 +36,13 @@ class XmlParser extends Parser{ | @@ -36,13 +36,13 @@ class XmlParser extends Parser{ | ||
| 36 | * @throws Exception | 36 | * @throws Exception |
| 37 | * @throws \Exception | 37 | * @throws \Exception |
| 38 | */ | 38 | */ |
| 39 | - protected function xmlToArray( $file_path ) { | 39 | + protected function xmlToArray( ) { |
| 40 | 40 | ||
| 41 | try { | 41 | try { |
| 42 | - $xml = new \SimpleXMLElement( $file_path, 0, true ); | 42 | + $xml = new \SimpleXMLElement( $this->file_path, 0, true ); |
| 43 | //\common\components\CustomVarDamp::dumpAndDie($xml->children()->children()); | 43 | //\common\components\CustomVarDamp::dumpAndDie($xml->children()->children()); |
| 44 | $result = $this->recursiveXMLToArray( $xml ); | 44 | $result = $this->recursiveXMLToArray( $xml ); |
| 45 | - } catch(Exception $ex) { | 45 | + } catch(\Exception $ex) { |
| 46 | 46 | ||
| 47 | throw $ex; | 47 | throw $ex; |
| 48 | } | 48 | } |
lib/YiiMultiparser.php
| @@ -17,7 +17,7 @@ class YiiMultiparser extends Component{ | @@ -17,7 +17,7 @@ class YiiMultiparser extends Component{ | ||
| 17 | 17 | ||
| 18 | public $configuration; | 18 | public $configuration; |
| 19 | public $parserHandler; | 19 | public $parserHandler; |
| 20 | -public $filePath; | 20 | +//public $file_path; |
| 21 | 21 | ||
| 22 | public function init() | 22 | public function init() |
| 23 | { | 23 | { |
| @@ -30,7 +30,7 @@ public $filePath; | @@ -30,7 +30,7 @@ public $filePath; | ||
| 30 | 30 | ||
| 31 | public function parse( $filePath, $options = [] ){ | 31 | public function parse( $filePath, $options = [] ){ |
| 32 | 32 | ||
| 33 | - $this->filePath = $filePath; | 33 | + // $this->file_path = $file_path; |
| 34 | $this->parserHandler->setup( $filePath, $options ); | 34 | $this->parserHandler->setup( $filePath, $options ); |
| 35 | 35 | ||
| 36 | return $this->parserHandler->run(); | 36 | return $this->parserHandler->run(); |
lib/YiiParserHandler.php
| @@ -18,9 +18,9 @@ class YiiParserHandler extends ParserHandler{ | @@ -18,9 +18,9 @@ class YiiParserHandler extends ParserHandler{ | ||
| 18 | * @param array $options | 18 | * @param array $options |
| 19 | * проверяет читабельность переданного файла, а также наличие настроек парсера в конфигурационном файле для данного типа файла | 19 | * проверяет читабельность переданного файла, а также наличие настроек парсера в конфигурационном файле для данного типа файла |
| 20 | */ | 20 | */ |
| 21 | -// public function setup($filePath, $options = []) | 21 | +// public function setup($file_path, $options = []) |
| 22 | // { | 22 | // { |
| 23 | -// $this->filePath = $filePath; | 23 | +// $this->file_path = $file_path; |
| 24 | // if (isset($options['mode'])) { | 24 | // if (isset($options['mode'])) { |
| 25 | // | 25 | // |
| 26 | // $this->mode = $options['mode']; | 26 | // $this->mode = $options['mode']; |
| @@ -35,10 +35,10 @@ class YiiParserHandler extends ParserHandler{ | @@ -35,10 +35,10 @@ class YiiParserHandler extends ParserHandler{ | ||
| 35 | // $this->options = $options; | 35 | // $this->options = $options; |
| 36 | // | 36 | // |
| 37 | // try { | 37 | // try { |
| 38 | -// $this->fileObject = new \SplFileObject($this->filePath, 'r'); | 38 | +// $this->fileObject = new \SplFileObject($this->file_path, 'r'); |
| 39 | // } catch (\ErrorException $e) { | 39 | // } catch (\ErrorException $e) { |
| 40 | -// // Yii::warning("Ошибка открытия файла {$this->filePath}"); | ||
| 41 | -// echo "Ошибка открытия файла {$this->filePath}"; | 40 | +// // Yii::warning("Ошибка открытия файла {$this->file_path}"); |
| 41 | +// echo "Ошибка открытия файла {$this->file_path}"; | ||
| 42 | // return []; | 42 | // return []; |
| 43 | // } | 43 | // } |
| 44 | // | 44 | // |