if (!
$this->validator
) { return TRUE;
} // Detect the props with a type class, and validate that the class exists.
$schema =
$definition['props'
] ?? NULL;
if (!
$schema) { if ($enforce_schemas) { throw new InvalidComponentException(sprintf('The component "%s" does not provide schema information. Schema definitions are mandatory for components declared in modules. For components declared in themes, schema definitions are only mandatory if the "enforce_prop_schemas" key is set to "true" in the theme info file.',
$definition['id'
]));
} return TRUE;
} $classes_per_prop =
$this->
getClassProps($schema);
$missing_class_errors =
[];
foreach ($classes_per_prop as $prop_name =>
$class_types) { // For each possible type, check if it is a class.
$missing_classes =
array_filter($class_types,
static fn(string
$class) => !
class_exists($class) && !
interface_exists($class));
$missing_class_errors =
[ ...
$missing_class_errors,
...
array_map( static fn(string
$class) =>
sprintf('Unable to find class/interface "%s" specified in the prop "%s" for the component "%s".',
$class,
$prop_name,
$definition['id'
]),
$missing_classes ),
];
}