public function validate(mixed $value, object $rule, ValidationContext $context): Result
{
if (!$rule instanceof ClassExistsRule) {
throw new UnexpectedRuleException(ClassExistsRule::class, $rule);
}
$result = new Result();
if (!is_string($value)) {
$result->addError(sprintf('Value must be a string, "%s" given.', gettype($value)));
return $result;
}
if (!class_exists($value)) {
$result->addError("Class '$value' does not exist or has syntax error.");
return $result;
}
if ($rule->parent !== null && !is_subclass_of($value, $rule->parent)) {
$result->addError("Class '$value' is not a subclass of '$rule->parent'.");
}
return $result;
}
User Contributed Notes
Leave a comment
Join the conversation to share a note.