Home » Php » php – Should a function use: return null;?

php – Should a function use: return null;?

Posted by: admin April 23, 2020 Leave a comment

Questions:

Should a function return null?

E.g.

function test()
{
    return null; // vs return;
}

Is the latter considered bad practice or doesn’t it matter?

PS

Whether it is bad practice shouldn’t be subjective IMHO.

How to&Answers:

If you don’t return anything, just use return; or omit it at all at the end of the function.
If your function is usually returns something but doesn’t for some reason, return null; is the way to go.

That’s similar to how you do it e.g. in C: If your function doesn’t return things, it’s void, otherwise it often return either a valid pointer or NULL.

Answer:

Always is a good practice to show what you’re returning.

But as a tip, the following are all equivalent:

function test()
{
    return null;
}


function test()
{
    return;
}


function test()
{

}

In all cases there for var_dump(test()); will be:

NULL

Answer:

An undefined function return value in PHP always equals NULL, so it does not make any difference (the runtime does this).

What makes a difference is that you make use of docblocks and document the return value with the @return tag so clever IDE’s offer info here.

If you want to signal per the docblock that not-returning a value is intended, you can use void:

 * @return void

If you want to signal that returning NULL is intended, you can use null or NULL (depending on your code-style for uppercase PHP standard constants):

 * @return null

or:

 * @return NULL

That should make the coders intention visible as by PHP this is would be always null as the factual return value.

Read on:

More details and updated information is in PeeHaa’s answer to this same question.

Answer:

It is just plain silly to return null if there is nothing to return. Doing return; shows intend of not actually returning anything. And makes it clear what the function does.

The fact that PHP does not have a void return type yet should not be a reason to make the intend less clear. Also note that PHP 7.1 will provide support for the void return type:

function test(): void {
    return null; // this will error
}

Answer:

When you use return type declarations with the nullable prefix “?” there is a difference!

The PHP documentation says …

As of PHP 7.1.0, return values can be marked as nullable by prefixing the type name with a question mark (?). This signifies that the function returns either the specified type or NULL.

So, when you return nothing the error message will be:

Fatal error: Uncaught TypeError: Return value of test() must be of the type string or null, none returned in ...

And when you return return; the error message will be:

Fatal error: A function with return type must return a value (did you mean "return null;" instead of "return;"?) in ...

When you return null, everything is fine.

See https://3v4l.org/5NTvg

Answer:

Semantically, I don’t think there’s a difference between the two. According to the PHP documentation on return:

If no parameter is supplied, then the parentheses must be omitted and
NULL will be returned.

I personally like putting the NULL there. Then there’s no question as to what’s being returned, making your debugging a little easier.

Answer:

The PEAR best practices page does a return null in their “Return early” example. This increases readability which we should always try to do since we write code for humans, not computers.

source: http://pear.php.net/manual/en/standards.bestpractices.php