Nette\PhpGenerator\PhpNamespace::addUse PHP Method

addUse() public method

public addUse ( $name, $alias = NULL, &$aliasOut = NULL ) : self
return self
    public function addUse($name, $alias = NULL, &$aliasOut = NULL)
    {
        $name = ltrim($name, '\\');
        if ($alias === NULL && $this->name === Helpers::extractNamespace($name)) {
            $alias = Helpers::extractShortName($name);
        }
        if ($alias === NULL) {
            $path = explode('\\', $name);
            $counter = NULL;
            do {
                if (empty($path)) {
                    $counter++;
                } else {
                    $alias = array_pop($path) . $alias;
                }
            } while (isset($this->uses[$alias . $counter]) && $this->uses[$alias . $counter] !== $name);
            $alias .= $counter;
        } elseif (isset($this->uses[$alias]) && $this->uses[$alias] !== $name) {
            throw new InvalidStateException("Alias '{$alias}' used already for '{$this->uses[$alias]}', cannot use for '{$name}'.");
        }
        $aliasOut = $alias;
        $this->uses[$alias] = $name;
        return $this;
    }

Usage Example

 /**
  * @param Database $database
  */
 public function generate(Database $database)
 {
     foreach ($database->getTables() as $table) {
         // Create namespace and inner class
         $namespace = new PhpNamespace($this->resolver->resolveRepositoryNamespace($table));
         $class = $namespace->addClass($this->resolver->resolveRepositoryName($table));
         // Detect extends class
         if (($extends = $this->config->get('repository.extends')) !== NULL) {
             $namespace->addUse($extends);
             $class->setExtends($extends);
         }
         // Save file
         $this->generateFile($this->resolver->resolveRepositoryFilename($table), (string) $namespace);
     }
     // Generate abstract base class
     if ($this->config->get('repository.extends') !== NULL) {
         // Create abstract class
         $namespace = new PhpNamespace($this->config->get('repository.namespace'));
         $class = $namespace->addClass(Helpers::extractShortName($this->config->get('repository.extends')));
         $class->setAbstract(TRUE);
         // Add extends from ORM/Repository
         $extends = $this->config->get('nextras.orm.class.repository');
         $namespace->addUse($extends);
         $class->setExtends($extends);
         // Save file
         $this->generateFile($this->resolver->resolveFilename(Helpers::extractShortName($this->config->get('repository.extends')), $this->config->get('repository.folder')), (string) $namespace);
     }
 }
All Usage Examples Of Nette\PhpGenerator\PhpNamespace::addUse