Some return type of function are missing.
When the only goal of @return is to give the type, we can remove them. The old phpdoc is now useless as we say the same thing directly in PHP code.
Here we can keep it because it gives extra info than just @return bool
The documentation states @return string, that's a hint we'll always return an array.
if $this->projects is null we call the attachProjects method. That method will assign a value  at the first step, so we've an array to return.
According PHP documentation:
So an instance of the class ArrayIterator is a Traversable.
By documenting only Traversable, we only allow code calling this method to use foreach, and we keep the right to implement our iterator as we want.
+ use Traversable;
We can express the idea of array of arrays like this (in doc, not in PHP code).