Add definitions to the container.
public addDefinitions ( string | array | DI\Definition\Source\DefinitionSource $definitions ) | ||
$definitions | string | array | DI\Definition\Source\DefinitionSource | Can be an array of definitions, the name of a file containing definitions or a DefinitionSource object. |
/** * @param $env * @return Container */ public function getContainer($env) { $container = null; $builder = new ContainerBuilder(Container::class); // $builder = new ContainerBuilder(); foreach (glob(APP_HOME . '/conf/conf.d/*.conf.php') as $filename) { $builder->addDefinitions($filename); } $definitionsEnumFile = APP_HOME . '/conf/config.' . $env . '.php'; if (file_exists($definitionsEnumFile)) { $builder->addDefinitions($definitionsEnumFile); } $builder->useAnnotations(false); $builder->useAutowiring(true); switch ($env) { case EnvironmentEnum::DEV: $builder->setDefinitionCache(new ArrayCache()); break; case EnvironmentEnum::PROD: default: $cache = $this->getCache(); $builder->setDefinitionCache($cache); $builder->writeProxiesToFile(true, APP_HOME . '/var/cache/proxies'); break; } $container = $builder->build(); return $container; }
/** * @param $env * @return \DI\Container */ public function getContainer($env) { $builder = new ContainerBuilder(); foreach (glob(APP_HOME . '/conf/conf.d/*.conf.php') as $filename) { $builder->addDefinitions($filename); } $builder->addDefinitions(APP_HOME . '/conf/config.' . $env . '.php'); switch ($env) { case EnvironmentEnum::DEV: $builder->setDefinitionCache(new ArrayCache()); break; case EnvironmentEnum::PROD: $redis = new Redis(); $redis->pconnect('localhost'); $redis->setOption(Redis::OPT_PREFIX, 'homeservice:cache:di:'); $cache = new RedisCache(); $cache->setRedis($redis); $builder->setDefinitionCache($cache); $builder->writeProxiesToFile(true, APP_HOME . '/var/cache/proxies'); break; } $builder->useAnnotations(true); $container = $builder->build(); return $container; }
private function createContainer(array $definitions = []) { $builder = new ContainerBuilder(); $builder->addDefinitions(__DIR__ . '/../../res/config/config.php'); $builder->addDefinitions([ContainerInterface::class => get(Container::class), Twig_LoaderInterface::class => object(Twig_Loader_Array::class)->constructor([]), ResourceRepository::class => object(NullRepository::class)]); $builder->addDefinitions($definitions); return $builder->build(); }
private function createContainer($definitions = []) { $builder = new ContainerBuilder(); $builder->addDefinitions(__DIR__ . '/../res/config/config.php'); $builder->addDefinitions([ResourceRepository::class => new InMemoryRepository()]); $builder->addDefinitions($definitions); return $builder->build(); }
public function __invoke(AppBuilder $appBuilder) { $containerBuilder = new ContainerBuilder(); $containerBuilder->addDefinitions($appBuilder->getConfigService()->get('php-di')); $containerBuilder->addDefinitions([BundleService::class => $appBuilder->getBundleService(), ConfigService::class => $appBuilder->getConfigService()]); $container = $containerBuilder->build(); $container->set(Container::class, $container); $appBuilder->setContainer($container); }
/** * Container compilation. * * @param mixed $config Configuration file/array. * * @link http://php-di.org/doc/php-definitions.html * * @return ContainerInterface */ public static function buildContainer($config = []) { $builder = new DI\ContainerBuilder(); $builder->useAnnotations(true); $builder->addDefinitions(['request' => \Zend\Diactoros\ServerRequestFactory::fromGlobals(), 'response' => DI\object('Zend\\Diactoros\\Response'), 'http_flow_event' => DI\object('Penny\\Event\\HttpFlowEvent')->constructor('bootstrap', DI\get('request'), DI\get('response')), 'event_manager' => DI\object('Zend\\EventManager\\EventManager'), 'dispatcher' => DI\factory(function ($container) { return new \Penny\Dispatcher($container->get('router'), $container); })]); $builder->addDefinitions($config); $container = $builder->build(); $container->set('di', $container); return $container; }
/** * @return Container */ public function createContainer() { $builder = new ContainerBuilder(); $builder->addDefinitions(__DIR__ . '/config.php'); $moduleConfigs = new Finder(); $moduleConfigs->files()->in(__DIR__ . '/../Module')->path('/.+/')->name('config.php'); foreach ($moduleConfigs as $moduleConfig) { /** @var SplFileInfo $moduleConfig */ $builder->addDefinitions($moduleConfig->getPathname()); } return $builder->build(); }
/** * @param ConfigRepository $config * @return \DI\Container */ private function initContainer(ConfigRepository $config) { $builder = new ContainerBuilder(); // Register ConfigRepository $builder->addDefinitions([ConfigRepository::class => $config]); // Register container definitions $definitions = $config->get('container')['definitions']; foreach ($definitions as $definition) { $builder->addDefinitions($definition); } $container = $builder->build(); return $container; }
/** * @test */ public function shows_error_page_with_dev_environment() { $containerBuilder = new ContainerBuilder(); $containerBuilder->addDefinitions(__DIR__ . '/../res/config/config.php'); $containerBuilder->addDefinitions(__DIR__ . '/../res/config/env/dev.php'); $container = $containerBuilder->build(); /** @var ErrorHandlerMiddleware $middleware */ $middleware = $container->get(ErrorHandlerMiddleware::class); $response = $middleware->__invoke(new ServerRequest(), function () { throw new \Exception('Hello world'); }); $this->assertContains('Error', (string) $response->getBody()); $this->assertContains('Hello world', (string) $response->getBody()); }
public function __construct() { $containerBuilder = new ContainerBuilder(); $containerBuilder->addDefinitions(__DIR__ . '/config.php'); $container = $containerBuilder->build(); parent::__construct($container); }
/** * Configure the DI container. */ private function configureContainer() { // Build the DI container. $builder = new ContainerBuilder(); $builder->addDefinitions(__DIR__ . '/config/di.php'); $this->container = $builder->build(); }
protected function createContainer() { $builder = new ContainerBuilder(); $builder->setDefinitionCache(new \Doctrine\Common\Cache\ArrayCache()); $builder->addDefinitions(dirname(__DIR__) . '/DI/config.php'); $this->container = $builder->build(); }
/** * Container compilation. * * @param mixed $config Configuration file/array. * * @link http://php-di.org/doc/php-definitions.html * * @return ContainerInterface */ private function buildContainer($config) { $builder = new DI\ContainerBuilder(); $builder->useAnnotations(true); $builder->addDefinitions($config); return $builder->build(); }
private function createOptimizedBuilder() { $cache = new ArrayCache($this->cacheDir); $builder = new ContainerBuilder(); $builder->setDefinitionCache($cache); $builder->addDefinitions(array('bicycle_factory' => \DI\object('PhpBench\\Benchmarks\\Container\\Acme\\BicycleFactory'))); return $builder; }
public function load(ContainerBuilder $container) { if (empty($this->sources)) { return; } foreach ($this->sources as $source) { $container->addDefinitions($source); } }
/** * Initial setup of DI\ContainerBuilder. * * @param bool $annotation annotation usage. * * @return DI\ContainerBuilder */ protected static function initialSetupContainerBuilder($annotation) { $builder = new DI\ContainerBuilder(); $builder->useAnnotations($annotation); $builder->addDefinitions(['request' => ServerRequestFactory::fromGlobals(), 'response' => DI\object(Response::class), 'http_flow_event' => DI\object(ZendHttpFlowEvent::class)->constructor('bootstrap', DI\get('request'), DI\get('response')), 'event_manager' => DI\object(ZendEvmProxy::class), 'dispatcher' => DI\factory(function ($container) { return new Dispatcher($container->get('router'), $container); })]); return $builder; }
/** * @param string $token * @param string $uri */ public function __construct($token, $uri = 'http://www.ifsistem.com/api/v1') { $builder = new ContainerBuilder(Container::class); $builder->useAnnotations(true); $builder->addDefinitions(['sayfa' => \DI\get(SayfaService::class), 'menu' => \DI\get(MenuService::class), 'manset' => \DI\get(MansetService::class), 'haber' => \DI\get(HaberService::class), 'galeri' => \DI\get(GaleriService::class), 'iletisimMesaj' => \DI\get(IletisimMesajService::class), 'site' => \DI\get(SiteService::class), 'sehir' => \DI\get(SehirService::class), 'ilce' => \DI\get(IlceService::class), 'semt' => \DI\get(SemtService::class), 'emlak' => \DI\get(EmlakService::class), 'urun' => \DI\get(UrunService::class), 'kullanici' => \DI\get(KullaniciService::class), 'resim' => \DI\get(ResimService::class), 'reklam' => \DI\get(ReklamService::class), 'siparis' => \DI\get(SiparisService::class), 'sanat' => \DI\get(SanatService::class), 'grup' => \DI\get(GrupService::class), 'reference' => \DI\get(ReferenceService::class), 'api' => function () use($token, $uri) { return new ApiService($token, $uri); }, ApiService::class => \DI\get('api')]); // test $this->container = $builder->build(); }
/** * Настраиваем контейнер. */ protected function setContainer() { $builder = new ContainerBuilder(); $builder->useAnnotations(false); if ($this->options['dependencies']) { $builder->addDefinitions($this->options['dependencies']); } $builder->writeProxiesToFile((bool) $this->options['containerProxy'], is_string($this->options['containerProxy']) ? $this->options['containerProxy'] : sys_get_temp_dir()); $this->container = $builder->build(); }
protected function configureContainer(ContainerBuilder $builder) { //$builder->useAutowiring(false); $builder->addDefinitions(__DIR__ . '/settings.php'); // Services $services = [\Doctrine\DBAL\Connection::class => function (ContainerInterface $container) { $config = new \Doctrine\DBAL\Configuration(); $connectionParams = array('dbname' => $container->get('db.name'), 'user' => $container->get('db.user'), 'password' => $container->get('db.pass'), 'host' => $container->get('db.host'), 'port' => $container->get('db.port'), 'charset' => 'utf8', 'driver' => 'pdo_mysql'); $dbh = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config); return $dbh; }, \Psr\Log\LoggerInterface::class => function (ContainerInterface $container) { $name = $container->get('logger.name'); $filepath = $container->get('logger.path'); $logger = new \Monolog\Logger($name); $logger->pushProcessor(new \Monolog\Processor\UidProcessor()); $logger->pushHandler(new \Monolog\Handler\StreamHandler($filepath, \Monolog\Logger::DEBUG)); return $logger; }]; $builder->addDefinitions($services); }
protected function setUp() { $config = ['app' => "this is my app", "test" => "prova", "version" => "0.0.1", 'routes' => [['name' => 'hello', 'route' => "--name=", 'short_description' => "Good morning!! This is a beautiful day", "handler" => ['App\\Command\\Hello', 'run']]], "service_manager" => ["invokables" => [], "factories" => []]]; $builder = new ContainerBuilder(); $builder->useAnnotations(true); $builder->addDefinitions($config); $container = $builder->build(); $configServiceManager = new Config($config['service_manager']); $container->set("service_manager", new ServiceManager($configServiceManager)); $this->application = new Application($config['app'], $config['version'], $config['routes'], Console::getInstance(), new Dispatcher($container)); }
public function testCorrectInjectionWithExternalContainer() { $builder = new ContainerBuilder(); $builder->addDefinitions(Loader::load()); $builder->useAnnotations(true); $app = new App($this->router, $builder->build()); $request = (new Request())->withUri(new Uri('/load'))->withMethod('GET'); $response = new Response(); $response = $app->run($request, $response); $this->assertEquals(200, $response->getStatusCode()); $this->assertEquals('eureka', $response->getBody()->__toString()); }
/** * Returns the dependency injection container * * @return \DI\Container */ public function getDiContainer() { if (!$this->diContainer) { $builder = new ContainerBuilder(); // $builder->setDefinitionCache(new \Doctrine\Common\Cache\ArrayCache()); $builder->setDefinitionCache(new FilesystemCache(__DIR__ . '/../../var/Cache/')); $builder->addDefinitions(__DIR__ . '/../../Classes/Configuration/dependencyInjectionConfiguration.php'); $this->diContainer = $builder->build(); // $this->diContainer = ContainerBuilder::buildDevContainer(); $this->diContainer->get('Cundd\\PersistentObjectStore\\Event\\SharedEventEmitter'); } return $this->diContainer; }
/** * Adds or replaces the service definitions in the given Container Builder with the provided services and * parameters. * * @param callable|array|DefinitionSource|string $configuration a list of services and parameters to load as an array or * Definition Source, or a filename where to load a list of services from. * @param ContainerBuilder $builder * * @link http://php-di.org/ for more information on the format of the Service Definition. * * @return void */ private function loadConfiguration($configuration, ContainerBuilder $builder) { if (is_callable($configuration)) { $configuration = $configuration(); } if ($configuration === null) { return; } if (is_array($configuration)) { $configuration = new DefinitionArray($configuration); } $builder->addDefinitions($configuration); }
public function setUp() { $containerBuilder = new ContainerBuilder(); $containerBuilder->addDefinitions(__DIR__ . '/../../app/config.php'); $container = $containerBuilder->build(); $this->checkRepository = $container->get(CheckRepository::class); $this->check = new DatabaseCheck(); $this->exercise = $this->createMock(DatabaseExerciseInterface::class); $this->exercise->expects($this->any())->method('getType')->willReturn(ExerciseType::CLI()); $this->dbDir = sprintf('%s/PhpSchool_PhpWorkshop_Check_DatabaseCheck', str_replace('\\', '/', realpath(sys_get_temp_dir()))); $this->assertEquals('Database Verification Check', $this->check->getName()); $this->assertEquals(DatabaseExerciseCheck::class, $this->check->getExerciseInterface()); }
/** * Returns the dependency injection container * * @return \DI\Container */ public function getDiContainer() { if (!$this->diContainer) { $builder = new ContainerBuilder(); // $builder->setDefinitionCache(new ArrayCache()); $builder->setDefinitionCache(new FilesystemCache(ConfigurationManager::getSharedInstance()->getConfigurationForKeyPath('cachePath'))); $this->diContainer = $builder->build(); $builder->addDefinitions(__DIR__ . '/Configuration/dependencyInjectionConfiguration.php'); $this->diContainer = $builder->build(); // $this->diContainer = ContainerBuilder::buildDevContainer(); } return $this->diContainer; }
/** * @throws \Exception */ protected function __construct() { $builder = new ContainerBuilder(); $builder->useAutowiring(false); $builder->useAnnotations(false); $configFile = sprintf(dirname(dirname(dirname(dirname(dirname(__DIR__))))) . '/config/' . self::CONFIG_FILE_PATTERN, self::$env); if (!file_exists($configFile)) { throw new \Exception(sprintf("The config file expected '%s' doesn't exist", $configFile)); } $builder->addDefinitions($configFile); $container = $builder->build(); self::$instance = $container; }
/** * Boots the dependency injection container. * * @param \Domynation\Config\ConfigInterface $config * @param \Domynation\Session\SessionInterface $session * * @return \DI\Container */ private function bootContainer(ConfigInterface $config, SessionInterface $session) { $builder = new ContainerBuilder(); $builder->useAnnotations(false); // Cache the definitions in production if (IS_PRODUCTION) { $builder->setDefinitionCache(new ApcuCache()); } // Load all global services $builder->addDefinitions(array_merge(require_once __DIR__ . '/Files/container.php', [ConfigInterface::class => $config, SessionInterface::class => $session])); // First pass: Instanciate each providers and load their container definitions $providers = array_reduce($config->get('providers'), function ($accumulator, $name) use($builder) { if (!class_exists($name)) { return $accumulator; } // Instanciate the provider $reflection = new \ReflectionClass($name); $provider = $reflection->newInstanceArgs(); // Load the provider's container definitions $builder->addDefinitions($provider->registerContainerDefinitions()); $accumulator[] = $provider; return $accumulator; }); // Build the container $container = $builder->build(); // Second pass: Boot each service foreach ($providers as $provider) { // Start the provider $provider->start($container->get(Router::class), $container->get(ViewFactoryInterface::class), $container->get(EventDispatcherInterface::class)); // Use reflection to get a closure copy of the `boot` method $reflection = new \ReflectionClass(get_class($provider)); $closure = $reflection->getMethod('boot')->getClosure($provider); // Let the container inject the dependency needed by the closure $container->call($closure); } return $container; }
/** * {@inheritdoc} */ public function init() { parent::init(); $environment = Config::getSystemConfig()->get("general")->get("environment"); // Set up dependency injection container $builder = new ContainerBuilder(); $builder->useAnnotations(true); // Configure the container $builder->addDefinitions(PIMCORE_WEBSITE_PATH . "/config/container.php"); if ($environment !== "local") { // Use whatever cache Pimcore has configured (if it has one configured) to cache object // definitions in the container $builder->setDefinitionCache(new PimcoreCache()); } else { // For development, or debugging we don't want to cache the container $builder->setDefinitionCache(new ArrayCache()); } $environmentConfigFile = DefinitionFileLocator::getPath($environment); $parametersFile = ParametersFileLocator::getPath(); if (file_exists($environmentConfigFile)) { $builder->addDefinitions($environmentConfigFile); } if (file_exists($parametersFile)) { $builder->addDefinitions($parametersFile); } $container = $builder->build(); /** @var \Zend_Controller_Dispatcher_Interface $currentDispatcher */ $currentDispatcher = \Zend_Controller_Front::getInstance()->getDispatcher(); $dispatcher = new Dispatcher(); $dispatcher->setContainer($container); $dispatcher->setControllerDirectory($currentDispatcher->getControllerDirectory()); $dispatcher->setDefaultModule($currentDispatcher->getDefaultModule()); $dispatcher->setDefaultAction($currentDispatcher->getDefaultAction()); $dispatcher->setDefaultControllerName($currentDispatcher->getDefaultControllerName()); \Zend_Controller_Front::getInstance()->setDispatcher($dispatcher); }
public function register(Application $app) { $app['di.definitions'] = array(); $app['di.options'] = array(); $app['di.default_options'] = array('cache' => null, 'container_class' => 'DI\\Container', 'useAnnotations' => true, 'useAutowiring' => true, 'writeProxiesToFile' => false, 'proxyDirectory' => null, 'silexAliases' => true, 'injectOnControllers' => true); $app['di'] = $app->share(function () use($app) { $acclimator = new ContainerAcclimator(); $container = new CompositeContainer(); $builder = $app['di.builder']; $builder->wrapContainer($container); $phpdi = $builder->build(); $phpdi->set('Silex\\Application', $app); $container->addContainer($acclimator->acclimate($phpdi)); $container->addContainer($acclimator->acclimate($app)); return $container; }); $app['di.builder'] = $app->share(function () use($app) { $options = $app['di.options_merged']; $builder = new ContainerBuilder($options['container_class']); $builder->useAnnotations((bool) $options['useAnnotations']); $builder->useAutowiring((bool) $options['useAutowiring']); $builder->writeProxiesToFile($options['writeProxiesToFile'], $options['proxyDirectory']); if ($options['cache']) { $builder->setDefinitionCache($options['cache']); } $definitions = (array) $app['di.definitions']; if ($options['silexAliases']) { $definitions[] = __DIR__ . '/config.php'; } foreach ($definitions as $file) { $builder->addDefinitions($file); } return $builder; }); $app['di.raw'] = $app->share(function () use($app) { return $app['di']->get($app['di.options_merged']['container_class']); }); $app['di.options_merged'] = $app->share(function () use($app) { return array_merge($app['di.default_options'], $app['di.options']); }); $app['resolver'] = $app->share($app->extend('resolver', function ($resolver, $app) { if ($app['di.options_merged']['injectOnControllers']) { return new PhpDiControllerResolver($app['di.raw'], $resolver); } return $resolver; })); }
/** * Create service * * @param ServiceLocatorInterface $serviceLocator * @return Container */ public function createService(ServiceLocatorInterface $serviceLocator) { if ($this->container !== null) { return $this->container; } $builder = new ContainerBuilder(); $config = $this->getConfig($serviceLocator); $configFile = $this->getDefinitionsFilePath($config); $builder->addDefinitions($configFile); $useAnnotations = $this->shouldUseAnnotations($config); $builder->useAnnotations($useAnnotations); $acclimator = new ContainerAcclimator(); $zfContainer = $acclimator->acclimate($serviceLocator); $builder->wrapContainer($zfContainer); /** * @var $cache Cache */ $cache = $this->getCache($serviceLocator, $config); if ($cache) { $builder->setDefinitionCache($cache); } $this->container = $builder->build(); return $this->container; }