![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/laminas/laminas-servicemanager/src/Proxy/ |
<?php declare(strict_types=1); namespace Laminas\ServiceManager\Proxy; use Laminas\ServiceManager\Exception; use Laminas\ServiceManager\Factory\DelegatorFactoryInterface; use ProxyManager\Factory\LazyLoadingValueHolderFactory; use ProxyManager\Proxy\LazyLoadingInterface; use ProxyManager\Proxy\VirtualProxyInterface; use Psr\Container\ContainerInterface; use function sprintf; /** * Delegator factory responsible for instantiating lazy loading value holder proxies of * given services at runtime * * @link https://github.com/Ocramius/ProxyManager/blob/master/docs/lazy-loading-value-holder.md */ final class LazyServiceFactory implements DelegatorFactoryInterface { /** * @param array<string, class-string> $servicesMap A map of service names to * class names of their respective classes */ public function __construct(private LazyLoadingValueHolderFactory $proxyFactory, private array $servicesMap) { } /** * {@inheritDoc} * * @param string $name * @return VirtualProxyInterface */ public function __invoke(ContainerInterface $container, $name, callable $callback, ?array $options = null) { if (isset($this->servicesMap[$name])) { $initializer = static function (&$wrappedInstance, LazyLoadingInterface $proxy) use ($callback): bool { $proxy->setProxyInitializer(null); $wrappedInstance = $callback(); return true; }; return $this->proxyFactory->createProxy($this->servicesMap[$name], $initializer); } throw new Exception\ServiceNotFoundException( sprintf('The requested service "%s" was not found in the provided services map', $name) ); } }