PHP7 Constructor class name

As I understand this, in PHP4 my code was buggy, but not in PHP7, right?

Not quite. PHP4-style constructors still work on PHP7, they are just been deprecated and they will trigger a Deprecated warning.

What you can do is define a __construct method, even an empty one, so that the php4-constructor method won’t be called on a newly-created instance of the class.

class foo
{
    public function __construct()
    {
        // Constructor's functionality here, if you have any.
    }

    public function foo()
    {
        // PHP4-style constructor.
        // This will NOT be invoked, unless a sub-class that extends `foo` calls it.
        // In that case, call the new-style constructor to keep compatibility.
        self::__construct();
    }
}

new foo();

It worked with older PHP versions simply because constructors don’t get return value. Every time you created a Participant instance, you implicitly call the participant method, that’s all.

Leave a Comment