[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 namespace Box\Spout\Writer\CSV; 4 5 use Box\Spout\Writer\AbstractWriter; 6 use Box\Spout\Common\Exception\IOException; 7 use Box\Spout\Common\Helper\EncodingHelper; 8 9 /** 10 * Class Writer 11 * This class provides support to write data to CSV files 12 * 13 * @package Box\Spout\Writer\CSV 14 */ 15 class Writer extends AbstractWriter 16 { 17 /** Number of rows to write before flushing */ 18 const FLUSH_THRESHOLD = 500; 19 20 /** @var string Content-Type value for the header */ 21 protected static $headerContentType = 'text/csv; charset=UTF-8'; 22 23 /** @var string Defines the character used to delimit fields (one character only) */ 24 protected $fieldDelimiter = ','; 25 26 /** @var string Defines the character used to enclose fields (one character only) */ 27 protected $fieldEnclosure = '"'; 28 29 /** @var int */ 30 protected $lastWrittenRowIndex = 0; 31 32 /** 33 * Sets the field delimiter for the CSV 34 * 35 * @api 36 * @param string $fieldDelimiter Character that delimits fields 37 * @return Writer 38 */ 39 public function setFieldDelimiter($fieldDelimiter) 40 { 41 $this->fieldDelimiter = $fieldDelimiter; 42 return $this; 43 } 44 45 /** 46 * Sets the field enclosure for the CSV 47 * 48 * @api 49 * @param string $fieldEnclosure Character that enclose fields 50 * @return Writer 51 */ 52 public function setFieldEnclosure($fieldEnclosure) 53 { 54 $this->fieldEnclosure = $fieldEnclosure; 55 return $this; 56 } 57 58 /** 59 * Opens the CSV streamer and makes it ready to accept data. 60 * 61 * @return void 62 */ 63 protected function openWriter() 64 { 65 // Adds UTF-8 BOM for Unicode compatibility 66 $this->globalFunctionsHelper->fputs($this->filePointer, EncodingHelper::BOM_UTF8); 67 } 68 69 /** 70 * Adds data to the currently opened writer. 71 * 72 * @param array $dataRow Array containing data to be written. 73 * Example $dataRow = ['data1', 1234, null, '', 'data5']; 74 * @param \Box\Spout\Writer\Style\Style $style Ignored here since CSV does not support styling. 75 * @return void 76 * @throws \Box\Spout\Common\Exception\IOException If unable to write data 77 */ 78 protected function addRowToWriter(array $dataRow, $style) 79 { 80 $wasWriteSuccessful = $this->globalFunctionsHelper->fputcsv($this->filePointer, $dataRow, $this->fieldDelimiter, $this->fieldEnclosure); 81 if ($wasWriteSuccessful === false) { 82 throw new IOException('Unable to write data'); 83 } 84 85 $this->lastWrittenRowIndex++; 86 if ($this->lastWrittenRowIndex % self::FLUSH_THRESHOLD === 0) { 87 $this->globalFunctionsHelper->fflush($this->filePointer); 88 } 89 } 90 91 /** 92 * Closes the CSV streamer, preventing any additional writing. 93 * If set, sets the headers and redirects output to the browser. 94 * 95 * @return void 96 */ 97 protected function closeWriter() 98 { 99 $this->lastWrittenRowIndex = 0; 100 } 101 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |