[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/lib/spout/src/Spout/Writer/CSV/ -> Writer.php (source)

   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  }


Generated: Thu Aug 11 10:00:09 2016 Cross-referenced by PHPXref 0.7.1