* * [ '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:----Ji4omOtj1wSS/lQfBpyrxlrtkyqrDOysK+PBmu/3D1/Zb+k3iZKWIjWHAsSsBb09Me5xScIGN3F8ySW+mAHUBrvKnx+Bz3QzsF9P8u+vu/SRE4XYPTJNVU3xj6hJ+dSPVPRYeBqJCnXkzPr2Qa+NG/BOQKBDN5Kqgs14Tb4unvOTGkVgVFzyS+xbX5OtLb6jDX2zkAWDiGcKitwnLDj6eZOxGZuwm9/S8hOtasTj8mP2C+4XNQEMAiegNmn4PJa2VkJDT46DUENEuR5RHGVB4WQAYPBrqOZaAxQlpdezJgit6ek4z2hX0QbXpaZKaDZ2lyz39oMr7d19DzPOPcePoYRhcs/WJkAmZH9l2gQymq3RaYXn8S3IssL0bdAWgBiQEZpOc/7V0Ui7rE33Hnc/59nQzy6GwtDXIMb7GlhHF9Z/vgV5tB10fzMVv5OkirjoAE37Fkv3HU30hmhKog0rWM9D+YMnY3tGYkjtOMY166C/zfQOdDy+GbtZB6vKEAq8CqfE6NizJq6dS8Oi70YQPdAN3zH/WUfVezC717FHsLORsAwAXHE4rptQm2jNdzaBW8AZXH4icHLPD+uGn6kIC3z5VAt2Jeq/q01Ou/Z0PX2kdmT4qFfAX9KUp2snz5JpsZq4gatrwgdXEM2wKtPDGHROhTKm2Upr5UPtMfi6FPE=----ATTACHMENT:----NzU2NDIwNzM1NjU4MDExNiA3ODA1OTE0MTgxMTAwMTg2IDgzMjc4MzU4NTExMjYyODM=