private function checkParametersAcceptor(ParametersAcceptor $parametersAcceptor, string $parameterMessage, string $returnMessage) : array
{
$errors = [];
foreach ($parametersAcceptor->getParameters() as $parameter) {
$type = $parameter->getType();
if ($type->getClass() !== null && !$this->broker->hasClass($type->getClass())) {
$errors[] = sprintf($parameterMessage, $parameter->getName(), $type->getClass());
} elseif ($type instanceof IterableType) {
$nestedItemType = $type->getNestedItemType();
if ($nestedItemType->getItemType()->getClass() !== null && !$this->broker->hasClass($nestedItemType->getItemType()->getClass())) {
$errors[] = sprintf($parameterMessage, $parameter->getName(), $type->describe());
}
}
}
$returnType = $parametersAcceptor->getReturnType();
if ($returnType->getClass() !== null && !$this->broker->hasClass($returnType->getClass())) {
$errors[] = sprintf($returnMessage, $returnType->getClass());
} elseif ($returnType instanceof IterableType) {
$nestedItemType = $returnType->getNestedItemType();
if ($nestedItemType->getItemType()->getClass() !== null && !$this->broker->hasClass($nestedItemType->getItemType()->getClass())) {
$errors[] = sprintf($returnMessage, $returnType->describe());
}
}
return $errors;
}