/**
  * {@inheritDoc}
  *
  * @return \Zend\ServiceManager\Proxy\LazyServiceFactory
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $config = $serviceLocator->get('Config');
     if (!isset($config['lazy_services'])) {
         throw new Exception\InvalidArgumentException('Missing "lazy_services" config key');
     }
     $lazyServices = $config['lazy_services'];
     if (!isset($lazyServices['class_map'])) {
         throw new Exception\InvalidArgumentException('Missing "class_map" config key in "lazy_services"');
     }
     $factoryConfig = new Configuration();
     if (isset($lazyServices['proxies_target_dir'])) {
         $factoryConfig->setProxiesTargetDir($lazyServices['proxies_target_dir']);
     }
     if (!isset($lazyServices['write_proxy_files']) || !$lazyServices['write_proxy_files']) {
         $factoryConfig->setGeneratorStrategy(new EvaluatingGeneratorStrategy());
     }
     if (isset($lazyServices['auto_generate_proxies'])) {
         $factoryConfig->setAutoGenerateProxies($lazyServices['auto_generate_proxies']);
         // register the proxy autoloader if the proxies already exist
         if (!$lazyServices['auto_generate_proxies']) {
             spl_autoload_register($factoryConfig->getProxyAutoloader());
             $factoryConfig->setGeneratorStrategy(new EvaluatingGeneratorStrategy());
         }
     }
     //if (!isset($lazyServicesConfig['runtime_evaluate_proxies']))
     if (isset($lazyServices['proxies_namespace'])) {
         $factoryConfig->setProxiesNamespace($lazyServices['proxies_namespace']);
     }
     return new LazyServiceFactory(new LazyLoadingValueHolderFactory($factoryConfig), $lazyServices['class_map']);
 }
 /**
  * @param Container $container
  */
 public static function create(Container $container)
 {
     $proxyTargetDir = $container->getParameter('phpro.annotated_cache.params.proxies_target_dir');
     $proxyNamespace = $container->getParameter('phpro.annotated_cache.params.proxies_namespace');
     $shouldAutoload = $container->getParameter('phpro.annotated_cache.params.proxies_register_autoloader');
     // Make sure to touch the filesystem.
     $container->get('filesystem')->mkdir($proxyTargetDir);
     $configuration = new Configuration();
     $configuration->setProxiesTargetDir($proxyTargetDir);
     $configuration->setProxiesNamespace($proxyNamespace);
     if ($shouldAutoload) {
         spl_autoload_register($configuration->getProxyAutoloader());
     }
 }
 /**
  * {@inheritDoc}
  * @return ConfigurationOptions
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     /** @var \Detail\Core\ProxyManager\Options\ConfigurationOptions $options */
     $options = $serviceLocator->get('Detail\\Core\\ProxyManager\\Options\\ConfigurationOptions');
     $factoryConfig = new Configuration();
     if ($options->getProxiesNamespace()) {
         $factoryConfig->setProxiesNamespace($options->getProxiesNamespace());
     }
     if ($options->getProxiesTargetDir()) {
         $factoryConfig->setProxiesTargetDir($options->getProxiesTargetDir());
     }
     if (!$options->getWriteProxyFiles()) {
         $factoryConfig->setGeneratorStrategy(new EvaluatingGeneratorStrategy());
     }
     spl_autoload_register($factoryConfig->getProxyAutoloader());
     return new LazyLoadingValueHolderFactory($factoryConfig);
 }
 /**
  * @param ServiceLocatorInterface $serviceLocator
  * @return LazyLoadingValueHolderFactory
  * @throws InvalidArgumentException
  */
 public function getLazyFactory(ServiceLocatorInterface $serviceLocator)
 {
     $config = $serviceLocator->has('config') ? $serviceLocator->get('config') : [];
     $config['lazy_services'] = ArrayUtils::merge(isset($config['lazy_services']) ? $config['lazy_services'] : [], $config['bsb_flysystem']['adapter_manager']['lazy_services']);
     if (!isset($config['lazy_services'])) {
         throw new \InvalidArgumentException('Missing "lazy_services" config key');
     }
     $lazyServices = $config['lazy_services'];
     $factoryConfig = new Configuration();
     if (isset($lazyServices['proxies_namespace'])) {
         $factoryConfig->setProxiesNamespace($lazyServices['proxies_namespace']);
     }
     if (isset($lazyServices['proxies_target_dir'])) {
         $factoryConfig->setProxiesTargetDir($lazyServices['proxies_target_dir']);
     }
     if (!isset($lazyServices['write_proxy_files']) || !$lazyServices['write_proxy_files']) {
         $factoryConfig->setGeneratorStrategy(new EvaluatingGeneratorStrategy());
     }
     spl_autoload_register($factoryConfig->getProxyAutoloader());
     return new LazyLoadingValueHolderFactory($factoryConfig);
 }
Example #5
0
 public function __construct(Entity $metadata, SerialisedData $data, EntityManager $entity_manager)
 {
     $this->metadata = $metadata;
     $this->serialised_data = $data;
     $this->entity_manager = $entity_manager;
     $conf = new Configuration();
     $conf->setProxiesTargetDir($entity_manager->getConfig()->getCacheDir());
     $conf->setProxiesNamespace(self::PROXY_NAMESPACE);
     $factory = new OrmProxyFactory($conf);
     $writer = $this;
     // Create the proxy with a Closure responsible for lazy-loading via this instance of the Writer
     $this->proxy = $factory->createProxy($metadata->getClassName(), function (LazyLoadingInterface $proxy, $method, array $parameters, &$initializer) use($writer) {
         // Hydrate the primitive data
         if (!$writer->is_hydrated) {
             $writer->hydrate();
         }
         // Hydrate foreign relatives on request
         $this->examineMethodForHydration($method);
         return true;
     });
     if (!$this->proxy) {
         throw new \RuntimeException("Unable to create proxy object of entity");
     }
 }
Example #6
0
 /**
  * Create the lazy services delegator factory.
  *
  * Creates the lazy services delegator factory based on the lazy_services
  * configuration present.
  *
  * @return Proxy\LazyServiceFactory
  * @throws ServiceNotCreatedException when the lazy service class_map
  *     configuration is missing
  */
 private function createLazyServiceDelegatorFactory()
 {
     if ($this->lazyServicesDelegator) {
         return $this->lazyServicesDelegator;
     }
     if (!isset($this->lazyServices['class_map'])) {
         throw new ServiceNotCreatedException('Missing "class_map" config key in "lazy_services"');
     }
     $factoryConfig = new ProxyConfiguration();
     if (isset($this->lazyServices['proxies_namespace'])) {
         $factoryConfig->setProxiesNamespace($this->lazyServices['proxies_namespace']);
     }
     if (isset($this->lazyServices['proxies_target_dir'])) {
         $factoryConfig->setProxiesTargetDir($this->lazyServices['proxies_target_dir']);
     }
     if (!isset($this->lazyServices['write_proxy_files']) || !$this->lazyServices['write_proxy_files']) {
         $factoryConfig->setGeneratorStrategy(new EvaluatingGeneratorStrategy());
     }
     spl_autoload_register($factoryConfig->getProxyAutoloader());
     $this->lazyServicesDelegator = new Proxy\LazyServiceFactory(new LazyLoadingValueHolderFactory($factoryConfig), $this->lazyServices['class_map']);
     return $this->lazyServicesDelegator;
 }
Example #7
0
 /**
  * @covers \ProxyManager\Configuration::getProxiesNamespace
  * @covers \ProxyManager\Configuration::setProxiesNamespace
  */
 public function testGetSetProxiesNamespace()
 {
     $this->assertSame('ProxyManagerGeneratedProxy', $this->configuration->getProxiesNamespace(), 'Default setting check for BC');
     $this->configuration->setProxiesNamespace('foo');
     $this->assertSame('foo', $this->configuration->getProxiesNamespace());
 }