Skip to content

Commit

Permalink
add ability to inject MiddlewareDispatcher
Browse files Browse the repository at this point in the history
  • Loading branch information
l0gicgate committed Aug 20, 2019
1 parent ccb7caa commit c5f31e8
Showing 1 changed file with 29 additions and 8 deletions.
37 changes: 29 additions & 8 deletions Slim/Factory/AppFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use Slim\Factory\Psr17\Psr17FactoryProvider;
use Slim\Factory\Psr17\SlimHttpPsr17Factory;
use Slim\Interfaces\CallableResolverInterface;
use Slim\Interfaces\MiddlewareDispatcherInterface;
use Slim\Interfaces\Psr17FactoryProviderInterface;
use Slim\Interfaces\RouteCollectorInterface;
use Slim\Interfaces\RouteResolverInterface;
Expand Down Expand Up @@ -59,33 +60,41 @@ class AppFactory
*/
protected static $routeResolver;

/**
* @var MiddlewareDispatcherInterface|null
*/
protected static $middlewareDispatcher;

/**
* @var bool
*/
protected static $slimHttpDecoratorsAutomaticDetectionEnabled = true;

/**
* @param ResponseFactoryInterface|null $responseFactory
* @param ContainerInterface|null $container
* @param CallableResolverInterface|null $callableResolver
* @param RouteCollectorInterface|null $routeCollector
* @param RouteResolverInterface|null $routeResolver
* @param ResponseFactoryInterface|null $responseFactory
* @param ContainerInterface|null $container
* @param CallableResolverInterface|null $callableResolver
* @param RouteCollectorInterface|null $routeCollector
* @param RouteResolverInterface|null $routeResolver
* @param MiddlewareDispatcherInterface|null $middlewareDispatcher
* @return App
*/
public static function create(
?ResponseFactoryInterface $responseFactory = null,
?ContainerInterface $container = null,
?CallableResolverInterface $callableResolver = null,
?RouteCollectorInterface $routeCollector = null,
?RouteResolverInterface $routeResolver = null
?RouteResolverInterface $routeResolver = null,
?MiddlewareDispatcherInterface $middlewareDispatcher = null
): App {
static::$responseFactory = $responseFactory ?? static::$responseFactory;
return new App(
self::determineResponseFactory(),
$container ?? static::$container,
$callableResolver ?? static::$callableResolver,
$routeCollector ?? static::$routeCollector,
$routeResolver ?? static::$routeResolver
$routeResolver ?? static::$routeResolver,
$middlewareDispatcher ?? static::$middlewareDispatcher
);
}

Expand All @@ -111,7 +120,11 @@ public static function createFromContainer(ContainerInterface $container): App
? $container->get(RouteResolverInterface::class)
: null;

return new App($responseFactory, $container, $callableResolver, $routeCollector, $routeResolver);
$middlewareDispatcher = $container->has(MiddlewareDispatcherInterface::class)
? $container->get(MiddlewareDispatcherInterface::class)
: null;

return new App($responseFactory, $container, $callableResolver, $routeCollector, $routeResolver, $middlewareDispatcher);
}

/**
Expand Down Expand Up @@ -224,6 +237,14 @@ public static function setRouteResolver(RouteResolverInterface $routeResolver):
static::$routeResolver = $routeResolver;
}

/**
* @param MiddlewareDispatcherInterface $middlewareDispatcher
*/
public static function setMiddlewareDispatcher(MiddlewareDispatcherInterface $middlewareDispatcher): void
{
static::$middlewareDispatcher = $middlewareDispatcher;
}

/**
* @param bool $enabled
*/
Expand Down

0 comments on commit c5f31e8

Please sign in to comment.