PHPCD\PHPCD::psr4ns PHP Method

psr4ns() public method

generate psr4 namespace according composer.json and file path
public psr4ns ( $path )
    public function psr4ns($path)
    {
        $dir = dirname($path);
        $composer_path = $this->root . '/composer.json';
        $composer = json_decode(file_get_contents($composer_path), true);
        if (isset($composer['autoload']['psr-4'])) {
            $list = (array) $composer['autoload']['psr-4'];
        } else {
            $list = [];
        }
        if (isset($composer['autoload-dev']['psr-4'])) {
            $dev_list = (array) $composer['autoload-dev']['psr-4'];
        } else {
            $dev_list = [];
        }
        foreach ($dev_list as $namespace => $paths) {
            if (isset($list[$namespace])) {
                $list[$namespace] = array_merge((array) $list[$namespace], (array) $paths);
            } else {
                $list[$namespace] = (array) $paths;
            }
        }
        $namespaces = [];
        foreach ($list as $namespace => $paths) {
            foreach ((array) $paths as $path) {
                $path = realpath($this->root . '/' . $path);
                if (strpos($dir, $path) === 0) {
                    $sub_path = str_replace($path, '', $dir);
                    $sub_path = str_replace('/', '\\', $sub_path);
                    $sub_namespace = trim(ucwords($sub_path, '\\'), '\\');
                    if ($sub_namespace) {
                        $sub_namespace = '\\' . $sub_namespace;
                    }
                    $namespaces[] = trim($namespace, '\\') . $sub_namespace;
                }
            }
        }
        return $namespaces;
    }