Enabled by default.
public useAutowiring ( boolean $bool ) : |
||
$bool | boolean | |
return |
/** * @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; }
/** * @inheritDoc */ protected function setUp() { parent::setUp(); $builder = new ContainerBuilder(); $builder->useAutowiring(true); $builder->useAnnotations(true); $this->container = $builder->build(); }
/** * @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; }
/** * Configure container builder. * * @param \DI\ContainerBuilder $containerBuilder * @param array $settings * * @return \DI\ContainerBuilder */ private static function configureContainerBuilder(DIContainerBuilder $containerBuilder, array $settings) { if (array_key_exists('use_autowiring', $settings)) { $containerBuilder->useAutowiring((bool) $settings['use_autowiring']); } if (array_key_exists('use_annotations', $settings)) { $containerBuilder->useAnnotations((bool) $settings['use_annotations']); } if (array_key_exists('ignore_phpdoc_errors', $settings)) { $containerBuilder->ignorePhpDocErrors((bool) $settings['ignore_phpdoc_errors']); } return $containerBuilder; }
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; })); }
<?php use DI\ContainerBuilder; return call_user_func(function () { $builder = new ContainerBuilder(); $builder->useAnnotations(false); $builder->useAutowiring(false); $builder->addDefinitions(['cache_path' => '/tmp/cache', CacheProvider::class => \DI\object(FileCache::class)->constructorParameter('path', \DI\get('cache_path')), UserRepository::class => \DI\object()->constructorParameter('cache', \DI\get(CacheProvider::class))]); return $builder->build(); });
/** * @return \DI\Container */ private function getContainer() { $containerBuilder = new ContainerBuilder(); $containerBuilder->addDefinitions(array_merge_recursive(require $this->frameworkConfigLocation, require $this->diConfigFile)); $containerBuilder->addDefinitions(['workshopTitle' => $this->workshopTitle, 'exercises' => $this->exercises, 'workshopLogo' => $this->logo, 'bgColour' => $this->bgColour, 'fgColour' => $this->fgColour]); $containerBuilder->useAutowiring(false); $containerBuilder->useAnnotations(false); return $containerBuilder->build(); }
/** * Makes sure the dependency injection is working with annotations */ public function testContainerOnInjectWorks() { $builder = new ContainerBuilder(); $builder->useAutowiring(false); $builder->useAnnotations(true); $container = $builder->build(); $router = new Router($container); $result = $router->map(new Route('/', DummyController::class, 'index'), new Route('/di/injected', DummyController::class, 'injected'))->run('/di/injected'); $this->assertEquals('stdClass', $result); }
/** * Run the app */ public function run() { $containerBuilder = new ContainerBuilder(); $containerBuilder->addDefinitions(__DIR__ . '/../app/config.php'); $containerBuilder->addDefinitions($this->diConfigFile); $containerBuilder->addDefinitions(array_merge(['workshopTitle' => $this->workshopTitle, 'exercises' => $this->exercises, 'workshopLogo' => $this->logo, 'bgColour' => $this->bgColour, 'fgColour' => $this->fgColour])); $containerBuilder->useAutowiring(false); $containerBuilder->useAnnotations(false); $container = $containerBuilder->build(); foreach ($this->exercises as $exercise) { if (false === $container->has($exercise)) { throw new \RuntimeException(sprintf('No DI config found for exercise: "%s". Register a factory.', $exercise)); } } $checkRepository = $container->get(CheckRepository::class); array_walk($this->checks, function (CheckInterface $check) use($checkRepository) { $checkRepository->registerCheck($check); }); try { $exitCode = $container->get(CommandRouter::class)->route(); } catch (MissingArgumentException $e) { $container->get(OutputInterface::class)->printError(sprintf('Argument%s: "%s" %s missing!', count($e->getMissingArguments()) > 1 ? 's' : '', implode('", "', $e->getMissingArguments()), count($e->getMissingArguments()) > 1 ? 'are' : 'is')); return 1; } return $exitCode; }
<?php use DI\ContainerBuilder; use Doctrine\Common\Cache\ArrayCache; require __DIR__ . '/../vendor/autoload.php'; $containerBuilder = new ContainerBuilder(); $containerBuilder->setDefinitionCache(new ArrayCache()); $containerBuilder->addDefinitions(__DIR__ . '/di-config.php'); $containerBuilder->useAutowiring(true); $container = $containerBuilder->build(); return $container;