/** * @param \Pimple $container * @param \G\Yaml2Pimple\Normalizer\PimpleNormalizer $normalizer * @param \G\Yaml2Pimple\Factory\ParameterFactory $parameterFactory * @param \G\Yaml2Pimple\Factory\ServiceFactory $serviceFactory * @param \G\Yaml2Pimple\Parameter $parameter * @param \G\Yaml2Pimple\Definition $service */ public function it_can_build_the_container_from_array_of_definitions($container, $normalizer, $parameterFactory, $serviceFactory, $parameter, $service) { $conf = array('parameters' => array('name' => $parameter), 'services' => array('App' => $service, 'Proxy' => $service, 'Curl' => $service)); $this->setNormalizer($normalizer); $parameterFactory->setNormalizer($normalizer)->shouldBeCalled(); $parameterFactory->create($parameter, $container)->willReturn($container)->shouldBeCalledTimes(1); /** @var ParameterFactory $parameterFactory */ $this->setParameterFactory($parameterFactory); $serviceFactory->setNormalizer($normalizer)->shouldBeCalled(); $serviceFactory->create($service, $container)->willReturn($container)->shouldBeCalledTimes(3); /** @var ServiceFactory $serviceFactory */ $this->setServiceFactory($serviceFactory); $this->buildFromArray($conf); }
include __DIR__ . '/src/Test.php'; include __DIR__ . '/src/Factory.php'; use G\Yaml2Pimple\ContainerBuilder; use G\Yaml2Pimple\Loader\YamlFileLoader; use G\Yaml2Pimple\Loader\CacheLoader; use G\Yaml2Pimple\Normalizer\ChainNormalizer; use G\Yaml2Pimple\Normalizer\PimpleNormalizer; use G\Yaml2Pimple\Normalizer\ExpressionNormalizer; use Symfony\Component\Config\FileLocator; use G\Yaml2Pimple\Proxy\ServiceProxyAdapter; use G\Yaml2Pimple\Proxy\AspectProxyAdapter; use G\Yaml2Pimple\Factory\ServiceFactory; use G\Yaml2Pimple\Factory\ProxyParameterFactory; $container = new \Pimple(); $builder = new ContainerBuilder($container); $ymlLoader = new YamlFileLoader(new FileLocator(__DIR__)); $cacheLoader = new CacheLoader($ymlLoader, __DIR__ . '/cache/'); // set the normalizers $builder->setNormalizer(new ChainNormalizer(array(new PimpleNormalizer(), new ExpressionNormalizer()))); $parameterFactory = new ProxyParameterFactory(); $serviceFactory = new ServiceFactory(new ServiceProxyAdapter(__DIR__ . '/cache/')); $serviceFactory->setAspectFactory(new AspectProxyAdapter(__DIR__ . '/cache/')); // set our loader helper $builder->setLoader($cacheLoader); // lazy service proxy factory $builder->setServiceFactory($serviceFactory); // lazy parameter proxy factory $builder->setParameterFactory($parameterFactory); $builder->load('test.yml'); $app = $container['App']; echo $app->hello();