Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
elementor
/
vendor_prefixed
/
php-di
/
php-di
/
src
/
Definition
/
Resolver
:
ArrayResolver.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php declare (strict_types=1); namespace ElementorDeps\DI\Definition\Resolver; use ElementorDeps\DI\Definition\ArrayDefinition; use ElementorDeps\DI\Definition\Definition; use ElementorDeps\DI\DependencyException; use Exception; /** * Resolves an array definition to a value. * * @since 5.0 * @author Matthieu Napoli <matthieu@mnapoli.fr> */ class ArrayResolver implements DefinitionResolver { /** * @var DefinitionResolver */ private $definitionResolver; /** * @param DefinitionResolver $definitionResolver Used to resolve nested definitions. */ public function __construct(DefinitionResolver $definitionResolver) { $this->definitionResolver = $definitionResolver; } /** * Resolve an array definition to a value. * * An array definition can contain simple values or references to other entries. * * @param ArrayDefinition $definition */ public function resolve(Definition $definition, array $parameters = []) : array { $values = $definition->getValues(); // Resolve nested definitions \array_walk_recursive($values, function (&$value, $key) use($definition) { if ($value instanceof Definition) { $value = $this->resolveDefinition($value, $definition, $key); } }); return $values; } public function isResolvable(Definition $definition, array $parameters = []) : bool { return \true; } private function resolveDefinition(Definition $value, ArrayDefinition $definition, $key) { try { return $this->definitionResolver->resolve($value); } catch (DependencyException $e) { throw $e; } catch (Exception $e) { throw new DependencyException(\sprintf('Error while resolving %s[%s]. %s', $definition->getName(), $key, $e->getMessage()), 0, $e); } } }