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 ArrayType) { $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 ArrayType) { $nestedItemType = $returnType->getNestedItemType(); if ($nestedItemType->getItemType()->getClass() !== null && !$this->broker->hasClass($nestedItemType->getItemType()->getClass())) { $errors[] = sprintf($returnMessage, $returnType->describe()); } } return $errors; }