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); 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); } fclose($handle); } }