Skip to content

Commit 64a010a

Browse files
authored
Merge pull request #2 from clue-labs/legacy
Fix legacy PHP < 5.5.4 by omitting default escape character
2 parents 7f45bc2 + 731d284 commit 64a010a

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/Encoder.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ class Encoder extends EventEmitter implements WritableStreamInterface
1414
private $temp = false;
1515
private $closed = false;
1616

17-
private $delimiter = ',';
18-
private $enclosure = '"';
19-
private $escapeChar = '\\';
17+
private $delimiter;
18+
private $enclosure;
19+
private $escapeChar;
2020

2121
public function __construct(WritableStreamInterface $output, $delimiter = ',', $enclosure = '"', $escapeChar = '\\')
2222
{
@@ -48,7 +48,19 @@ public function write($data)
4848
return false;
4949
}
5050

51-
if (!is_array($data) || fputcsv($this->temp, $data, $this->delimiter, $this->enclosure, $this->escapeChar) === false) {
51+
$written = false;
52+
if (is_array($data)) {
53+
// custom escape character requires PHP 5.5.4+ (see constructor check)
54+
// @codeCoverageIgnoreStart
55+
if ($this->escapeChar === '\\') {
56+
$written = fputcsv($this->temp, $data, $this->delimiter, $this->enclosure);
57+
} else {
58+
$written = fputcsv($this->temp, $data, $this->delimiter, $this->enclosure, $this->escapeChar);
59+
}
60+
// @codeCoverageIgnoreEnd
61+
}
62+
63+
if ($written === false) {
5264
$this->handleError(new \RuntimeException('Unable to encode CSV'));
5365
return false;
5466
}

0 commit comments

Comments
 (0)