src/traits/SingletonTrait.php
public static final function init(...$arguments): object
    {
        $className = get_called_class();
        if (!isset(self::$___instances[$className])) {
            // init without constructor and call constructor with initial arguments
            // to prevent error: "Access to non-public constructor of class ...".
            // newInstance() nor newInstanceArgs() cannot do that.
            $classInstance = (new \ReflectionClass($className))->newInstanceWithoutConstructor();

            // no error, weird? (ô_ô)
            call_user_func_array([$classInstance, '__construct'], $arguments);

            self::$___instances[$className] = $classInstance;
        }

        return self::$___instances[$className];
    }
public static final function init(...$arguments): object
    {
        $className = get_called_class();
        if (!isset(self::$___instances[$className])) {
            // init without constructor and call constructor with initial arguments
            // to prevent error: "Access to non-public constructor of class ...".
            // newInstance() nor newInstanceArgs() cannot do that.
            $classInstance = (new \ReflectionClass($className))->newInstanceWithoutConstructor();

            // no error, weird? (ô_ô)
            call_user_func_array([$classInstance, '__construct'], $arguments);

            self::$___instances[$className] = $classInstance;
        }

        return self::$___instances[$className];
    }
Init.
@param  ... $arguments
@return object