file = $file; $this->file->setCsvControl($delimiter); $this->file->setFlags(\SplFileObject::READ_CSV); $this->file->seek( $this->first_line ); $this->first_line = $first_line; $this->in_charset = 'windows-1251'; $this->hasHeaderRow = $hasHeaderRow; } public function getIterator() { return new \ArrayIterator($this->read()); } /** * @return array * @throws InvalidFileException * @deprecated Use ::read instead. */ public function parseAll() { return $this->read(); } /** * @return array * @throws InvalidFileException */ public function read() { $return = []; $line = 0; $keys = NULL; while (($row = $this->readRow()) !== FALSE) { $line++; if ($this->hasHeaderRow) { if ($keys === NULL) { $keys = array_values($row); } else { if (count($keys) !== count($row)) { // Yii::warning("Invalid columns detected on line #$line ."); return $return; } $return[] = array_combine($keys, $row); } } else { $return[] = $row; } } $this->closeHandler(); return $return; } private function closeHandler() { $this->file = NULL; } private function readRow() { $dirt_value_arr = $this->file->fgetcsv( ); $encode_arr = $this->encodeArray( $dirt_value_arr ); return $encode_arr; } private function encodeArray( $array_to_encode ) { return array_map(function($array_to_encode) { return iconv( $this->in_charset, $this->out_charset, $array_to_encode ); }, $array_to_encode); } }