<?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);
 }
}
