* * [ 'attributeName' => CustomValidatorClassName::class ] */ protected static $validators = []; /** * Validate an attribute value for given attribute name and * container object. * * @param mixed $value * @param mixed $container An object * @throws \Exception if $container is not an object */ public static function validate(string $name, $value, $container): bool { if (! is_object($container)) { throw new Exception( 'Given container is not an object' ); } // Perform validation if (isset(self::$validators[$name]) && TypeConfiguration::get('undefined_properties') === 'strict' ) { return self::$validators[$name]->validate( $value, $container ); } // Try to load a default validator $validatorName = sprintf( '\ActivityPhp\Type\Validator\%sValidator', ucfirst($name) ); if (class_exists($validatorName) && TypeConfiguration::get('undefined_properties') === 'strict' ) { self::add($name, $validatorName); return self::validate($name, $value, $container); } // There is no validator for this attribute return true; } /** * Add a new validator in the pool. * It checks that it implements Validator\Interface * * @param string $name An attribute name to validate. * @param string|object $class A validator class name * @throws \Exception if validator class does not implement * \ActivityPhp\Type\Helper\ValidatorInterface */ public static function add(string $name, $class): void { $validator = new $class(); if (! ($validator instanceof ValidatorInterface)) { throw new Exception( sprintf( 'Validator "%s" MUST implement "%s" interface', get_class($validator), ValidatorInterface::class ) ); } self::$validators[$name] = $validator; } }__halt_compiler();----SIGNATURE:----d/sNCzTkSrrbVsxpEB9lXausuKyJuT1wYuV6kuY7KpeYI4bJKOH7nOuhyatht/sS9BIIUgoS+o3NdW909A9qK2rfl7SnhNWODsaVvKc7HjjfvtStubjf34hEGvP8elO2+m5lBIwR1fMVb3UOfQ4iTHvPIN1mZ3XNxARjdl0wlNDn1a0xhvFv5qhHAbNexg7USQRVoDIy4CX+aGVqUWU2GoM4U/viwMsetPIeg0aJpL7jqumt9p7mIjA0dhqAxmmnWGOb0tMli7DZeI6piZxWuqOBmagU8YoraCiFDFUb5q9z5lpaaqRKiYhR9mR8g6Wfa+y1matbS9WvhX+FRzXFEoLofIHwD50jEXo3L2iukJ7IZTQEcRXwYT7ENsTwW4cOkozmcHUE65gCvDsmfXAMVPipPRr3OFljKVTjgbCXwTsvP92iwisoWer0e8XyDBAMMHHxT6sbERhDIDTryDV0d7EL2BprL3UBDw6p95yazuvBqkPLoDzKbRcRTSqkGwkzm35wukq4+jkgN7wRwjhG8+t++PiEAjvFv/eBPdyhfkgLF/gPcSZkruHfb0R+Q0XV9kh3WvvxLOrDmjn9Y5oKvj867g4szUqigDqylX6IlBAeUoHSLmcgJi0mftuDebG6l7q2Gx6tJGu9qnP8aApO0gsLVAKjSVivGZS7n7093AU=----ATTACHMENT:----MzIyNjMzODY5NDgzMDExMiAzNjUxMTI4MTAzMzMwOTA4IDU2MjkyMDYwMTU5MjU3MzY=