return $factory($c, $name); }; } // Inject invokables foreach ($config['dependencies']['invokables'] as $name => $object) { $container[$name] = function ($c) use($object) { return new $object(); }; } // Inject "pimple extend-style" factories if (!empty($config['dependencies']['extensions']) && is_array($config['dependencies']['extensions'])) { foreach ($config['dependencies']['extensions'] as $name => $extensions) { foreach ($extensions as $extension) { $container->extend($name, function ($service, $c) use($extension, $name) { $factory = new $extension(); return $factory($service, $c, $name); // passing extra parameter $name }); } } } // Inject "zend-servicemanager3 style" delegators as Pimple anonymous "extend" functions if (!empty($config['dependencies']['delegators']) && is_array($config['dependencies']['delegators'])) { foreach ($config['dependencies']['delegators'] as $name => $delegators) { foreach ($delegators as $delegator) { $container->extend($name, function ($service, $c) use($delegator, $name) { $factory = new $delegator(); $callback = function () use($service) { return $service; }; return $factory($c, $name, $callback);