Are there more advantages to returning an empty string or null value?

If I were writing the below method (for example) is it considered good practice to either:

A: return an empty string if the document didn't exist?

B: return a null value?

Having done a lot of Java, and methods in Java requiring a return type, I'm under the impression it is best practice to return a consistent type, is this also the case in PHP or is it better to return a null value instead?

DocumentClass
{
    public function getDir($documentId)
    {
        /* Code to get location of document  */
        return (file_exists($document) ? $document : '');
    }
}

if (!empty($documentClass->getDir(5))
{
    /* Do this */
}

If it is better to return a null value, can you explain why?


PHP convention

Return boolean FALSE.

OOP approch

Throw an exception. Also you should use a method dir_exitsts (or any other name you like) that only returns boolean (true of false). And use it before calling getDir

There really no specific rule for this. Its completely up to you.

I follow PHP way which is returning false.


What would you do with this returned value? Should this signal a logical error, illegal input - or just some edge case?

In both 'error' cases I'd stick with exceptions instead of some fringe return values - especially because PHP is weakly-typed language, and it's way too easy to mix NULL and '' in some (stupidly) written == expression.

For edge cases perhaps I'd stick with FALSE as a value to return. It's, to my mind, a bit broken approach (check this link for the truly maddening example), but at least it's a common idiom in PHP.


file_exists return FALSE for to non-existing files.

so you can change your condition with this way

if (false ! == $documentClass->getDir(5))
{
    /* Do this */
}

alternative : is_readable

this returns TRUE if the file or directory specified by filename exists and is readable, FALSE otherwise.