public static function getInstance(...$constructorParams)
    {
        $class = get_called_class();
        if (isset(static::$instanceOfClass[$class])) {
            return static::$instanceOfClass[$class];
        }
        static::$instanceOfClass[$class] = $nstnc = new static(...$constructorParams);
        return $nstnc;
    }
public static function getInstance(...$constructorParams)
    {
        $class = get_called_class();
        if (isset(static::$instanceOfClass[$class])) {
            return static::$instanceOfClass[$class];
        }
        static::$instanceOfClass[$class] = $nstnc = new static(...$constructorParams);
        return $nstnc;
    }
public static function getInstance ( ... $ constructorParams ) { $ class = get_called_class ( ) ; if ( isset ( static :: $ instanceOfClass [ $ class ] ) ) { return static :: $ instanceOfClass [ $ class ] ; } static :: $ instanceOfClass [ $ class ] = $ nstnc = new static ( ... $ constructorParams ) ; return $ nstnc ; }
First object instantiated via this method, called on current class.

@param mixed ...$constructorParams

@return object
static, really, but IDE might not resolve that.
First object instantiated via this method called on current class .