93 $resolvedArguments = [];
95 ? array_replace($this->config->getArguments($requestedType),
$arguments)
96 : $this->config->getArguments($requestedType);
97 foreach ($parameters as $parameter) {
98 list($paramName, $paramType, $paramRequired, $paramDefault) = $parameter;
102 }
elseif ($paramRequired) {
104 $argument = [
'instance' => $paramType];
106 $this->creationStack = [];
107 throw new \BadMethodCallException(
108 'Missing required argument $' . $paramName .
' of ' . $requestedType .
'.' 112 $argument = $paramDefault;
114 if ($paramType && $argument !== $paramDefault && !is_object($argument)) {
115 if (!isset($argument[
'instance']) || !is_array($argument)) {
116 throw new \UnexpectedValueException(
117 'Invalid parameter configuration provided for $' . $paramName .
' argument of ' . $requestedType
120 $argumentType = $argument[
'instance'];
121 $isShared = (isset($argument[
'shared']) ? $argument[
'shared'] : $this->config->isShared($argumentType));
122 $argument = $isShared
123 ? $this->objectManager->get($argumentType)
124 : $this->objectManager->create($argumentType);
125 }
elseif (is_array($argument)) {
126 if (isset($argument[
'argument'])) {
127 $argument = isset($this->globalArguments[$argument[
'argument']])
128 ? $this->globalArguments[$argument[
'argument']]
130 }
elseif (!empty($argument)) {
134 $resolvedArguments[] = $argument;
136 return $resolvedArguments;
elseif(isset( $params[ 'redirect_parent']))