OK, checking for a FALSE-ish return is valid protocol for reporting errors. But it would be clearer if:
 1. We added "@return NULL|string|array" to the comments (and specified the circumstances/meaning of each possible return)
 2. We explicitly say "else return NULL;".