ManaPHP\Http\Response::setCsvContent PHP Method

setCsvContent() public method

public setCsvContent ( array $rows, string $attachmentName, array | string $columns = null ) : static
$rows array
$attachmentName string
$columns array | string
return static
    public function setCsvContent($rows, $attachmentName, $columns = null)
    {
        if (is_string($columns)) {
            $columns = explode(',', $columns);
        }
        if (pathinfo($attachmentName, PATHINFO_EXTENSION) !== 'csv') {
            $attachmentName .= '.csv';
        }
        $this->setAttachment($attachmentName);
        $file = fopen('php://temp', 'r+');
        fprintf($file, "");
        if ($columns !== null) {
            if (Text::startsWith($columns[0], 'ID')) {
                $columns[0] = strtolower($columns[0]);
            }
            fputcsv($file, $columns);
        }
        foreach ($rows as $row) {
            if (is_object($row)) {
                if (method_exists($row, 'toArray')) {
                    $data = $row->toArray();
                } else {
                    $data = (array) $row;
                }
            } elseif (!is_array($row)) {
                $data = [$row];
            } else {
                $data = $row;
            }
            fputcsv($file, $data);
        }
        rewind($file);
        $content = stream_get_contents($file);
        fclose($file);
        $this->setContentType('text/csv');
        $this->setContent($content);
        return $this;
    }