DI\ContainerBuilder::build PHP Method

build() public method

Build and return a container.
public build ( ) : Container
return Container
    public function build()
    {
        $sources = array_reverse($this->definitionSources);
        if ($this->useAnnotations) {
            $sources[] = new AnnotationReader($this->ignorePhpDocErrors);
        } elseif ($this->useAutowiring) {
            $sources[] = new Autowiring();
        }
        $chain = new SourceChain($sources);
        if ($this->cache) {
            $source = new CachedDefinitionSource($chain, $this->cache);
            $chain->setRootDefinitionSource($source);
        } else {
            $source = $chain;
            // Mutable definition source
            $source->setMutableDefinitionSource(new DefinitionArray());
        }
        $proxyFactory = new ProxyFactory($this->writeProxiesToFile, $this->proxyDirectory);
        $this->locked = true;
        $containerClass = $this->containerClass;
        return new $containerClass($source, $proxyFactory, $this->wrapperContainer);
    }

Usage Example

Example #1
1
 /**
  * @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;
 }
All Usage Examples Of DI\ContainerBuilder::build