first_line = $first_line; $this->file = $file; $this->file->setCsvControl($delimiter); $this->file->setFlags(\SplFileObject::READ_CSV); $this->file->seek( $this->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() { // @todo add comments $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() // @todo add comments { $dirt_value_arr = $this->file->fgetcsv( ); $dirt_value_arr = array_slice( $dirt_value_arr, 2 ); $clear_arr = Encoder::encodeArray( $this->in_charset, $this->out_charset, $dirt_value_arr ); return $clear_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); // // } }