63 lines
1.7 KiB
PHP
63 lines
1.7 KiB
PHP
<?php
|
|
namespace MailPoetVendor\Symfony\Component\Validator;
|
|
if (!defined('ABSPATH')) exit;
|
|
use MailPoetVendor\Symfony\Component\Validator\Context\ExecutionContextInterface;
|
|
abstract class ConstraintValidator implements ConstraintValidatorInterface
|
|
{
|
|
public const PRETTY_DATE = 1;
|
|
public const OBJECT_TO_STRING = 2;
|
|
protected $context;
|
|
public function initialize(ExecutionContextInterface $context)
|
|
{
|
|
$this->context = $context;
|
|
}
|
|
protected function formatTypeOf($value)
|
|
{
|
|
return \get_debug_type($value);
|
|
}
|
|
protected function formatValue($value, int $format = 0)
|
|
{
|
|
if ($format & self::PRETTY_DATE && $value instanceof \DateTimeInterface) {
|
|
if (\class_exists(\IntlDateFormatter::class)) {
|
|
$formatter = new \IntlDateFormatter(\Locale::getDefault(), \IntlDateFormatter::MEDIUM, \IntlDateFormatter::SHORT, 'UTC');
|
|
return $formatter->format(new \DateTime($value->format('Y-m-d H:i:s.u'), new \DateTimeZone('UTC')));
|
|
}
|
|
return $value->format('Y-m-d H:i:s');
|
|
}
|
|
if ($value instanceof \UnitEnum) {
|
|
return $value->name;
|
|
}
|
|
if (\is_object($value)) {
|
|
if ($format & self::OBJECT_TO_STRING && \method_exists($value, '__toString')) {
|
|
return $value->__toString();
|
|
}
|
|
return 'object';
|
|
}
|
|
if (\is_array($value)) {
|
|
return 'array';
|
|
}
|
|
if (\is_string($value)) {
|
|
return '"' . $value . '"';
|
|
}
|
|
if (\is_resource($value)) {
|
|
return 'resource';
|
|
}
|
|
if (null === $value) {
|
|
return 'null';
|
|
}
|
|
if (\false === $value) {
|
|
return 'false';
|
|
}
|
|
if (\true === $value) {
|
|
return 'true';
|
|
}
|
|
return (string) $value;
|
|
}
|
|
protected function formatValues(array $values, int $format = 0)
|
|
{
|
|
foreach ($values as $key => $value) {
|
|
$values[$key] = $this->formatValue($value, $format);
|
|
}
|
|
return \implode(', ', $values);
|
|
}
|
|
}
|