src/php/Webforge/Common/System/Dir.php
public function resolvePath() {
    if (count($this->path) == 0) {
      return $this;
    }
    
    if ($this->isRelative()) { 
      /* wir ermitteln das aktuelle working directory und fügen dieses vor unserem bisherigen Pfad hinzu
       * den . am anfang brauchen wir nicht wegmachen, das wird nachher normalisiert
       */
      $cwd = self::factory(getcwd().DIRECTORY_SEPARATOR);
      $this->prefix = $cwd->getPrefix($this);

      $this->path = array_merge(
        $cwd->getPathArray(), 
        $this->path
      ); 
    }

    /* pfad normalisieren */
    $newPath = array();
    foreach ($this->path as $dir) {
      if ($dir !== '.') { // dir2/dir1/./dir4/dir3 den . ignorieren
        if ($dir == '..') {  // ../ auflösen dadurch, dass wir ein verzeichnis zurückgehen
          array_pop($newPath);
        } else {
          $newPath[] = $dir;
        }
      }
    }
        
    $this->path = $newPath;

    return $this;
  }
public function resolvePath() {
    if (count($this->path) == 0) {
      return $this;
    }
    
    if ($this->isRelative()) { 
      /* wir ermitteln das aktuelle working directory und fügen dieses vor unserem bisherigen Pfad hinzu
       * den . am anfang brauchen wir nicht wegmachen, das wird nachher normalisiert
       */
      $cwd = self::factory(getcwd().DIRECTORY_SEPARATOR);
      $this->prefix = $cwd->getPrefix($this);

      $this->path = array_merge(
        $cwd->getPathArray(), 
        $this->path
      ); 
    }

    /* pfad normalisieren */
    $newPath = array();
    foreach ($this->path as $dir) {
      if ($dir !== '.') { // dir2/dir1/./dir4/dir3 den . ignorieren
        if ($dir == '..') {  // ../ auflösen dadurch, dass wir ein verzeichnis zurückgehen
          array_pop($newPath);
        } else {
          $newPath[] = $dir;
        }
      }
    }
        
    $this->path = $newPath;

    return $this;
  }
public function resolvePath ( ) { if ( count ( $ this -> path ) == 0 ) { return $ this ; } if ( $ this -> isRelative ( ) ) { /* wir ermitteln das aktuelle working directory und fügen dieses vor unserem bisherigen Pfad hinzu
       * den . am anfang brauchen wir nicht wegmachen, das wird nachher normalisiert
       */ $ cwd = self :: factory ( getcwd ( ) . DIRECTORY_SEPARATOR ) ; $ this -> prefix = $ cwd -> getPrefix ( $ this ) ; $ this -> path = array_merge ( $ cwd -> getPathArray ( ) , $ this -> path ) ; } /* pfad normalisieren */ $ newPath = array ( ) ; foreach ( $ this -> path as $ dir ) { if ( $ dir !== '.' ) { // dir2/dir1/./dir4/dir3 den . ignorieren if ( $ dir == '..' ) { // ../ auflösen dadurch, dass wir ein verzeichnis zurückgehen array_pop ( $ newPath ) ; } else { $ newPath [ ] = $ dir ; } } } $ this -> path = $ newPath ; return $ this ; }
Resolves relative parts of the path an normalizes

if path is relative its resolved to the current working directory

the type of the path of getcwd will be used. So this might change the prefix-type of directory!
if dir is not relative this works like realpath with directories that do not exist
@uses PHP::getcwd()
@chainable
Resolves relative parts of the path an normalizes