Wrapper to get the absolute environment path.
Handles symlinks properly, as well.

@return string Path
@codeCoverageIgnore
510487
protected function _getRealAppPath()
    {
        $path = realpath(APP);
        if (substr($path, -1, 1) !== DS) {
            $path .= DS;
        }

        return $path;
    }
832355
protected function getPath()
    {
        if (null === $this->parent) {
            return null;
        }
        if (null !== ( $pPath = $this->parent->getPath() )) {
            return $pPath . '.' . $this->handle;
        }else {
            return $this->handle;
        }
    }
187085
protected function getConfigPath()
    {
        if ($this->hasOption('config_path') && ! empty($this->getOption('config_path'))) {
            return $this->getOption('config_path');
        }
        return rtrim($this->getOption('root_path'), '/\\') . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR;
    }
1131096
public function getWebPath()
    {
        $webPath = $this->environment->getCurrentEnvironmentConfig()->get('Domain', false);
        if (!$webPath) {
            $webPath = Request::getInstance()->getCurrentUrl(true)->getDomain() . '/';
        }

        return $webPath;
    }
1182575
public function getRelativePath()
    {
        return trim(substr($this->path, strlen($this->basePath)), self::TRIM_CHARS);
    }
692247
public function getRelativePath()
    {
        $templates = $this->config['directories']['templates'];

        $extension = $this->config['templates']['extension'];

        return $templates . '/' . $this->getFilename($extension);
    }
759116
public function path(): string
    {
        $path = $this->uri()->getPath();

        if (empty($path)) {
            return '/';
        } elseif ($path[0] !== '/') {
            return '/' . $path;
        }

        return $path;
    }
205821
public static function getDefaultPath()
    {
        // use static path for all Unix-based systems
        if (DIRECTORY_SEPARATOR !== '\\') {
            return '/etc/hosts';
        }

        // Windows actually stores the path in the registry under
        // \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
        $path = '%SystemRoot%\\system32\drivers\etc\hosts';

        $base = getenv('SystemRoot');
        if ($base === false) {
            $base = 'C:\\Windows';
        }

        return str_replace('%SystemRoot%', $base, $path);
    }
789994
public function getWebAssetsPath()
    {
        $class = $this->getClass();
        $classParts = explode("\\", $class);
        $class = end($classParts);

        $path = 'bundles/'.strtolower(
                str_replace(
                    'Bundle', '',
                    $class
                )
            );
        return $path;
    }
1223001
protected static function getSourcePath()
    {
        $path = DIRECTORY_SEPARATOR.implode(
                DIRECTORY_SEPARATOR,
                array('src', 'Doozr', 'Installer', 'Base.php')
            );

        return realpath(str_replace($path, '', __FILE__)).DIRECTORY_SEPARATOR;
    }
1365944
public function getPath()
    {
        $path = $this->getArgument('path');

        // If path is absolute return it without modifications.
        if (
            strpos($path, 'http://') !== false
            || strpos($path, 'https://') !== false
            || substr($path, 0, 2) === '//'
        ) {
            return $path;
        }

        $filePath = $this->config->get('app.directory').DIRECTORY_SEPARATOR."public/{$path}";
        $fileUrl = $this->config->get('app.path').DIRECTORY_SEPARATOR."public/{$path}";

        if ($this->filesystem->exists($filePath)) {
            return $fileUrl;
        }

        throw new FileNotFoundException("File does not exist at path {$path}");
    }
564919
public function getRelativePath()
    {
        if ($this->file !== null) {
            return dirname($this->file->getForLocalProcessing(false)) . '/';
        } else {
            return str_replace(PATH_site, '', $this->fileInfo['path']);
        }
    }
407797
public function getFilePath() {
		if ($this->path === null) {
			throw new NoPath('Path to a file was not been specified');
		}
		
		// Absolute path
		if ($this->path[0] === DIRECTORY_SEPARATOR) {
			return $this->path;
		}
		// Relative path
		return $this->getIntrospectiveData()->dirname . DIRECTORY_SEPARATOR . $this->path;
	}
473474
public function path()
    {
        if ($this->climate()->arguments->defined('path')) {
            $this->path = $this->climate()->arguments->get('path');
        }
        return $this->path;
    }
482624
public function getFilesPath() {
		$repo = $this->getServiceContainer()->getResourceRepository();
		if (!$repo->contains($this->getFilesPuliPath())) {
			$dir = new Directory($repo->get('/files')->getFilesystemPath());
			$path = $dir->toPath()->append('managed/' . $this->model->getName());
			$dir = new Directory($path);
			$dir->make();
		}
		$dir = new Directory($repo->get($this->getFilesPuliPath())->getFilesystemPath());

		return $dir->toPath();
	}
1073313
public function getPath()
	{
		$realpath	= realpath( $this->fileName );
		$path	= dirname( $realpath );
		$path	= str_replace( "\\", "/", $path );
		$path	.= "/";
		return	$path;
	}
68323
public function path(){

        $args = \func_get_args();

        switch (\count($args)){

            case 1:

                $file  = $args[0];

                if ($this->isAbsolutePath($file) && \file_exists($file)) {
                    return $file;
                }

                $parts = \explode(':', $file, 2);

                if (count($parts)==2){
                    if (!isset($this->paths[$parts[0]])) return false;

                    foreach ($this->paths[$parts[0]] as &$path){
                        if (\file_exists($path.$parts[1])){
                            return $path.$parts[1];
                        }
                    }
                }

                return false;

            case 2:

                if (!isset($this->paths[$args[0]])) {
                    $this->paths[$args[0]] = [];
                }
                \array_unshift($this->paths[$args[0]], \rtrim(\str_replace(DIRECTORY_SEPARATOR, '/', $args[1]), '/').'/');

                return $this;
        }

        return null;
    }