/**
  * @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);
 }
Example #2
0
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();