protected function getProjectPath(): string
    {
        if (!$this->projectPath) {
            $cls = new \ReflectionClass(static::class);
            $baseDir = dirname($cls->getFileName());
            $this->projectPath = Path::makeAbsolute($this->PROJECT_DIR, $baseDir);
        }

        return $this->projectPath;
    }
protected function getProjectPath(): string
    {
        if (!$this->projectPath) {
            $cls = new \ReflectionClass(static::class);
            $baseDir = dirname($cls->getFileName());
            $this->projectPath = Path::makeAbsolute($this->PROJECT_DIR, $baseDir);
        }

        return $this->projectPath;
    }
protected function getProjectPath ( ) : string { if ( ! $ this -> projectPath ) { $ cls = new \ ReflectionClass ( static :: class ) ; $ baseDir = dirname ( $ cls -> getFileName ( ) ) ; $ this -> projectPath = Path :: makeAbsolute ( $ this -> PROJECT_DIR , $ baseDir ) ; } return $ this -> projectPath ; }
Return the absolute project root path.

This is found by taking the class' $PROJECT_DIR property and resolving it onto
the directory that the called class is located in.

@return string
Return the absolute project root path .