delimiter = $delimiter; return $this; } /** * @return string - mime type for the downloaded file */ protected function getMimeType() { return $this->wantDownload ? 'text/csv' : 'text/plain'; } /** * @return string - file extension for the downloaded file */ protected function getFileExtension() { return 'csv'; } /** * Write the document to stdout ('php://output') */ protected function writeDocument() { $handle = fopen('php://output', 'w'); $columnNames = array_map(function (Column $c) { return $c->title; }, $this->columns); fputcsv($handle, $columnNames, $this->delimiter); foreach ($this->iterateRows() as $row) { $items = []; foreach ($this->columns as $column) { if (isset($row->{$column->name})) { $items[] = $row->{$column->name}; } else { $items[] = null; } } fputcsv($handle, $items, $this->delimiter); } fclose($handle); } }