Search code examples
phpsyntaxwarningserror-reportingmaintainability

Syntax for new class declarations in PHP


I inherited a php project that was previously assigned to another development company and I often see very strange code implementations which I've never seen before and which I think are probably errors. That said, they are everywhere and the server logs don't complain about them or cast warnings. It's possible that error_reporting has been turned off somewhere.

For example, I am seeing a lot of class declarations like this:

$registration = new EventRegistration;

That's strange to me, as I've only ever seen class instancing using new done as:

$registration = new EventRegistration();

Can someone clarify if this is incorrect / not best practice / passable?

I assume it's just a syntax error that will compile but is technically wrong. Something similar to when people do array syntax like $array[key] instead of $array['key']. Is that correct?

Thanks.


Solution

  • With the new keyword you want to create a new object, if that object does not require any arguments (as defined in the __construct() method) its perfectly fine do leave out the ().

    class foo{
        function __construct(){}
    } // valid
    
    class bar{
        function __construct($arg = null){}
    } // valid
    
    class foobar{
        function __construct($arg){}
    } // not valid
    

    In this scenario, only foobar will trigger a warning if you do not pass any args. Its a matter of preference I would say.

    But for $array[key] would say key is a constant and would likely trigger a warning.