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