A few things here. First of all, `$userName` and `$projectName` need to be accessed using `$this->userName` and `$this->projectName` respectively.

Second, you're missing a slash between `$userName` and `projects/', as well as one between `$projectName` and `$dirpath`. Without this the path will be generated incorrectly. `$dirpath` will always have a slash in it.

Finally, this error suggests that you did not run this code, as this function will not run. We need to be running code before we open a pull request for it. Apologies if you did, but I'm just working on a reasonable assumption based on syntax.

I also see these same errors in `removeFile`, `removeDir`, and `saveFile`. Since you use the same path building logic in all four functions, you may want to create a private function to do this for you.