protected static function getSharedInstance(string $key, ...$params)
	{
		// Returns mock if exists
		if (isset(static::$mocks[$key]))
		{
			return static::$mocks[$key];
		}

		if (! isset(static::$instances[$key]))
		{
			// Make sure $getShared is false
			array_push($params, false);

			static::$instances[$key] = static::$key(...$params);
		}

		return static::$instances[$key];
	}
protected static function getSharedInstance(string $key, ...$params)
	{
		// Returns mock if exists
		if (isset(static::$mocks[$key]))
		{
			return static::$mocks[$key];
		}

		if (! isset(static::$instances[$key]))
		{
			// Make sure $getShared is false
			array_push($params, false);

			static::$instances[$key] = static::$key(...$params);
		}

		return static::$instances[$key];
	}
protected static function getSharedInstance ( string $ key , ... $ params ) { // Returns mock if exists if ( isset ( static :: $ mocks [ $ key ] ) ) { return static :: $ mocks [ $ key ] ; } if ( ! isset ( static :: $ instances [ $ key ] ) ) { // Make sure $getShared is false array_push ( $ params , false ) ; static :: $ instances [ $ key ] = static :: $ key ( ... $ params ) ; } return static :: $ instances [ $ key ] ; }
Returns a shared instance of any of the class' services.

$key must be a name matching a service.

@param string $key
@param array  ...$params

@return mixed
Returns a shared instance of any of the class services .