. */ /* */ /*************************************************************************************/ namespace FreeShipping\Format; use FreeShipping\Format\CSVLine; /** * Class CSV * @package FreeShipping\Format * @author Thelia */ class CSV { protected $separator; protected $lines=array(); const CRLF = "\r\n"; /** * @param $separator * @param array $lines */ public function __construct($separator, array $lines=array()) { $this->separator = $separator; foreach ($lines as $line) { if ($line instanceof CSVLine) { $this->addLine($line); } } } /** * @param $separator * @param array $lines * @return CSV */ public static function create($separator, array $lines=array()) { return new static($separator, $lines); } /** * @param CSVLine $line * @return $this */ public function addLine(CSVLine $line) { $this->lines[] = $line; return $this; } /** * @return string parsed CSV */ public function parse() { $buffer = ""; for ($j=0; $j < ($lineslen=count($this->lines)); ++$j) { /** @var CSVLine $line */ $line = $this->lines[$j]; $aline = $line->getValues(); for ($i=0; $i < ($linelen=count($aline)); ++$i) { $buffer .= "\"".$aline[$i]."\""; if ($i !== $linelen-1) { $buffer .= $this->separator; } } if ($j !== $lineslen-1) { $buffer .= self::CRLF; } } return $buffer; } }