PHP class instantiation. To use or not to use the parentheses?

PhpOopClassInstantiation

Php Problem Overview


I've always assumed that - in the absence of constructor parameters - the parentheses (curly brackets) follow the class name when creating a class instance, were optional, and that you could include or exclude them at your own personal whim.

That these two statements were equal:

$foo = new bar;
$foo = new bar();

Am I right? Or is there some significance to the brackets that I am unaware of?

I know this sounds like a RTM question, but I've been searching for a while (including the entire PHP OOP section) and I can't seem to find a straight answer.

Php Solutions


Solution 1 - Php

They are equivalent. If you are not coding by any code convention, use which you like better. Personally, I like to leave it out, as it is really just clutter to me.

Solution 2 - Php

$foo = new bar() would be useful over $foo = new bar if you were passing arguments to the constructor. For example:

class bar {

    public $user_id;

    function __construct( $user_id ) {
        $this->user_id = $user_id
    }
}

-

$foo = new bar( $user_id );

Aside from that, and as already mentioned in the accepted answer, there is no difference.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAtliView Question on Stackoverflow
Solution 1 - PhpGordonView Answer on Stackoverflow
Solution 2 - PhphenrywrightView Answer on Stackoverflow