* * [ '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:----KRJmHZXRNhS+3hMnLaa6pAcWnakPQubi5L75O8c42vcCI8A0NKNf1p8S8D1PTM8f1jxIJSHj9VcB37T8qBqQln9OQEfME3u+jJn2cJccwxEJS8tdlnhbejw94kDOArdq8O2dfmepXhN7K6zEDIgq1VuaBNYRs9UpVIxiTSSQv4rE5nhMWqqhl7S5LMVR3EFsp2J94SbWNsIusJWOR8egvzgkg9oSfBAAHQaLJZwfbe2V+ijGSSsbzFcpSzEZeQ10SKzOVREx0suqckqkkz5hV+9yzUUAHIb4LYXkK13+TZJ+gH+f858zg2g5jidlNfW4SzoxcNWmLC7L1AbaUtP2wmqu8a6juR7GJtqpkkNAYRDbPnazCtyAHj/FqrIFITqniaMM5yhHPP2Qsf+w+G14UjkStl6aDlDOAPq2ffwC6N9KQOnJdEkCX6Vze4Lv+jpQwLwx0zlODBM+m2aTkWAC3R1Y7kpDe/3xMoYUm4QaIqA+opovrA0oyAPRLuDj9VIVwesL9gy7hATmXaCJfDc/+m7o1f/UOhveu+Zw2mWjzNs7AX/54jlhMp9hF9JtCAFVZ8N/g0sFlFQKGqXD7wkhWVBfpCmCYfa4vtYweKja8t3iD78iOmVhrK1CFVV0+qIf+y1woSZKRun2oRSV2Cu1jjmoPTpRPLVVakEDdoKqT5M=----ATTACHMENT:----NzEzNDg5MTExNzI1MDE4OSA3OTM2NzQ2NzgxMjc3MDkwIDE4MzcwNjcyNzA2ODIzNzA=