> 6)) . chr(0x80 | ($value & 0x3F)); } if ($value < 0x10000) { return chr(0xE0 | ($value >> 12)) . chr(0x80 | (($value >> 6) & 0x3F)) . chr(0x80 | ($value & 0x3F)); } return chr(0xF0 | ($value >> 18)) . chr(0x80 | (($value >> 12) & 0x3F)) . chr(0x80 | (($value >> 6) & 0x3F)) . chr(0x80 | ($value & 0x3F)); } /** * {@inheritdoc} */ protected function validate(int $value): void { if ($value >= 0xD800 && $value <= 0xDFFF) { throw new InvalidArgumentException(sprintf('Surrogate 0x%X is not a valid UTF-8 character', $value)); } parent::validate($value); } }