for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace PhpOffice\PhpSpreadsheet\Style\NumberFormat\Wizard;
class DateTime extends DateTimeWizard
{
/**
* @var string[]
*/
protected array $separators;
* @var array<DateTimeWizard|string>
protected array $formatBlocks;
* @param null|string|string[] $separators
* If you want to use only a single format block, then pass a null as the separator argument
* @param DateTimeWizard|string ...$formatBlocks
public function __construct($separators, ...$formatBlocks)
$this->separators = $this->padSeparatorArray(
is_array($separators) ? $separators : [$separators],
count($formatBlocks) - 1
);
$this->formatBlocks = array_map([$this, 'mapFormatBlocks'], $formatBlocks);
}
* @param DateTimeWizard|string $value
private function mapFormatBlocks($value): string
// Any date masking codes are returned as lower case values
if (is_object($value)) {
// We can't explicitly test for Stringable until PHP >= 8.0
return $value;
// Wrap any string literals in quotes, so that they're clearly defined as string literals
return $this->wrapLiteral($value);
public function format(): string
return implode('', array_map([$this, 'intersperse'], $this->formatBlocks, $this->separators));