first_line = $first_line; $this->first_column = $first_column; $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 */ public function read() { // @todo add comments $return = []; $line = 0; $this->keys = NULL; while (($row = $this->readRow()) !== FALSE) { $line++; if ($this->hasHeaderRow) { if ($this->keys === NULL) { $this->keys = array_values($row); } else { if (count($this->keys) !== count($row)) { // Yii::warning("Invalid columns detected on line #$line ."); return $return; } $return[] = array_combine($this->keys, $row); } } else { $return[] = $row; } } $this->closeHandler(); return $return; } protected function closeHandler() { $this->file = NULL; } protected function readRow() // @todo add comments { $row = $this->file->fgetcsv( ); // if (is_array($row)) { $row = array_slice( $row, $this->first_column ); $row = Encoder::encodeArray( $this->in_charset, $this->out_charset, $row ); } else{ $row = false; } // if ($this->keys !== NULL) // @$clear_arr[3] = ValueFilter::pricefilter($clear_arr[3]);{}{}{} return $row; } }