3
3
namespace DI \Bridge \Silex ;
4
4
5
5
use DI \Bridge \Silex \Container \ContainerInteropProxy ;
6
- use DI \Bridge \Silex \Controller \ControllerResolver ;
7
- use DI \Bridge \Silex \MiddlewareListener ;
8
- use DI \Bridge \Silex \ConverterListener ;
9
- use Silex \EventListener \LocaleListener ;
10
- use Silex \EventListener \StringToResponseListener ;
11
- use Silex \LazyUrlMatcher ;
12
- use Symfony \Component \HttpKernel \Kernel ;
13
- use Symfony \Component \HttpKernel \HttpKernelInterface ;
14
- use Symfony \Component \HttpKernel \KernelEvents ;
15
- use Symfony \Component \HttpKernel \Event \GetResponseEvent ;
16
- use Symfony \Component \HttpKernel \Event \FilterResponseEvent ;
17
- use Symfony \Component \HttpKernel \Event \PostResponseEvent ;
18
- use Symfony \Component \HttpKernel \EventListener \ResponseListener ;
19
- use Symfony \Component \HttpKernel \EventListener \RouterListener ;
6
+ use DI \Bridge \Silex \Provider \HttpKernelServiceProvider ;
20
7
use DI \Container ;
21
8
use DI \ContainerBuilder ;
22
9
use Interop \Container \ContainerInterface ;
23
10
use Invoker \CallableResolver ;
24
- use Invoker \Reflection \CallableReflection ;
25
- use Invoker \ParameterResolver \AssociativeArrayResolver ;
26
- use Invoker \ParameterResolver \Container \TypeHintContainerResolver ;
27
- use Invoker \ParameterResolver \ResolverChain ;
11
+ use Symfony \Component \HttpFoundation \Response ;
12
+ use Symfony \Component \HttpKernel \Event \FilterResponseEvent ;
13
+ use Symfony \Component \HttpKernel \Event \GetResponseEvent ;
14
+ use Symfony \Component \HttpKernel \Event \PostResponseEvent ;
15
+ use Symfony \Component \HttpKernel \KernelEvents ;
28
16
29
17
/**
30
18
* Replacement for the Silex Application class to use PHP-DI instead of Pimple.
@@ -72,51 +60,8 @@ public function __construct(ContainerBuilder $containerBuilder = null, array $va
72
60
return new CallableResolver ($ this ->containerInteropProxy );
73
61
};
74
62
75
- // Override the controller resolver with ours
76
- $ this ['resolver ' ] = function () {
77
- return new ControllerResolver (
78
- $ this ['phpdi.callable_resolver ' ],
79
- new ResolverChain ([
80
- new AssociativeArrayResolver ,
81
- new TypeHintContainerResolver ($ this ->containerInteropProxy ),
82
- ])
83
- );
84
- };
85
-
86
- // Override the callback resolver with ours
87
- $ this ['callback_resolver ' ] = function () {
88
- return new CallbackResolver (
89
- $ this ,
90
- $ this ['phpdi.callable_resolver ' ]
91
- );
92
- };
93
-
94
- // Override the dispatcher with ours to use our event listeners
95
- $ this ['dispatcher ' ] = $ this ->share (function () {
96
- /**
97
- * @var EventDispatcherInterface
98
- */
99
- $ dispatcher = new $ this ['dispatcher_class ' ]();
100
-
101
- $ urlMatcher = new LazyUrlMatcher (function () {
102
- return $ this ['url_matcher ' ];
103
- });
104
- if (Kernel::VERSION_ID >= 20800 ) {
105
- $ dispatcher ->addSubscriber (new RouterListener ($ urlMatcher , $ this ['request_stack ' ], $ this ['request_context ' ], $ this ['logger ' ]));
106
- } else {
107
- $ dispatcher ->addSubscriber (new RouterListener ($ urlMatcher , $ this ['request_context ' ], $ this ['logger ' ], $ this ['request_stack ' ]));
108
- }
109
- $ dispatcher ->addSubscriber (new LocaleListener ($ this , $ urlMatcher , $ this ['request_stack ' ]));
110
- if (isset ($ this ['exception_handler ' ])) {
111
- $ dispatcher ->addSubscriber ($ this ['exception_handler ' ]);
112
- }
113
- $ dispatcher ->addSubscriber (new ResponseListener ($ this ['charset ' ]));
114
- $ dispatcher ->addSubscriber (new MiddlewareListener ($ this , $ this ->callbackInvoker ));
115
- $ dispatcher ->addSubscriber (new ConverterListener ($ this ['routes ' ], $ this ['callback_resolver ' ], $ this ->callbackInvoker ));
116
- $ dispatcher ->addSubscriber (new StringToResponseListener ());
117
-
118
- return $ dispatcher ;
119
- });
63
+ // Register own HttpKernelServiceProvider which overrides some defaults.
64
+ $ this ->register (new HttpKernelServiceProvider ($ this ->containerInteropProxy , $ this ->callbackInvoker ));
120
65
}
121
66
122
67
public function offsetGet ($ id )
@@ -151,7 +96,7 @@ public function getPhpDi()
151
96
public function before ($ callback , $ priority = 0 )
152
97
{
153
98
$ this ->on (KernelEvents::REQUEST , function (GetResponseEvent $ event ) use ($ callback ) {
154
- if (HttpKernelInterface:: MASTER_REQUEST !== $ event ->getRequestType ()) {
99
+ if (! $ event ->isMasterRequest ()) {
155
100
return ;
156
101
}
157
102
@@ -175,7 +120,7 @@ public function before($callback, $priority = 0)
175
120
public function after ($ callback , $ priority = 0 )
176
121
{
177
122
$ this ->on (KernelEvents::RESPONSE , function (FilterResponseEvent $ event ) use ($ callback ) {
178
- if (HttpKernelInterface:: MASTER_REQUEST !== $ event ->getRequestType ()) {
123
+ if (! $ event ->isMasterRequest ()) {
179
124
return ;
180
125
}
181
126
@@ -208,7 +153,7 @@ public function finish($callback, $priority = 0)
208
153
$ request = $ event ->getRequest ();
209
154
$ response = $ event ->getResponse ();
210
155
$ middleware = $ this ['callback_resolver ' ]->resolveCallback ($ callback );
211
- $ ret = $ this ->callbackInvoker ->call ($ middleware , [
156
+ $ this ->callbackInvoker ->call ($ middleware , [
212
157
// type hints
213
158
'Symfony\Component\HttpFoundation\Request ' => $ request ,
214
159
'Symfony\Component\HttpFoundation\Response ' => $ response ,
@@ -218,12 +163,6 @@ public function finish($callback, $priority = 0)
218
163
2 => $ this ,
219
164
]);
220
165
221
- if ($ ret instanceof Response) {
222
- $ event ->setResponse ($ ret );
223
- } elseif (null !== $ ret ) {
224
- throw new \RuntimeException ('An after middleware returned an invalid response value. Must return null or an instance of Response. ' );
225
- }
226
-
227
166
}, $ priority );
228
167
}
229
168
}
0 commit comments