Nette\DI\ContainerBuilder::removeDefinition PHP Method

removeDefinition() public method

Removes the specified service definition.
public removeDefinition ( $name ) : void
return void
    public function removeDefinition($name)
    {
        $this->classListNeedsRefresh = TRUE;
        $name = isset($this->aliases[$name]) ? $this->aliases[$name] : $name;
        unset($this->definitions[$name]);
    }

Usage Example

 /**
  * @param string $serviceName
  * @param string $cacheDirectory
  */
 private function createEagerProxy($serviceName, $cacheDirectory)
 {
     $definition = $this->builder->getDefinition($serviceName);
     $this->builder->removeDefinition($serviceName);
     $hiddenServiceName = $this->prefix($serviceName);
     $proxyClassName = $definition->getClass() . md5(serialize($definition));
     $this->builder->addDefinition($serviceName)->setClass($proxyClassName)->setFactory('@' . $this->prefix('eagerServiceFactory') . '::create', array($hiddenServiceName, $proxyClassName));
     $this->builder->addDefinition($hiddenServiceName, $definition)->setAutowired(false);
     if (!class_exists($proxyClassName)) {
         $classGenerator = new ClassGenerator();
         $this->proxyGenerator->generate(new \ReflectionClass($definition->getClass()), $classGenerator);
         $classGenerator->setName($proxyClassName);
         $code = '<?php' . ClassGenerator::LINE_FEED . $classGenerator->generate();
         $tempPath = $cacheDirectory . uniqid() . ".php";
         $backslashPos = strrpos($proxyClassName, '\\');
         $newPath = $cacheDirectory . substr($proxyClassName, $backslashPos ? $backslashPos + 1 : 0) . ".php";
         file_put_contents($tempPath, $code, LOCK_EX);
         rename($tempPath, $newPath);
         require_once $newPath;
     }
 }
All Usage Examples Of Nette\DI\ContainerBuilder::removeDefinition