File tree Expand file tree Collapse file tree 2 files changed +481
-0
lines changed Expand file tree Collapse file tree 2 files changed +481
-0
lines changed Original file line number Diff line number Diff line change 1+ <?php
2+ namespace Codeception \Lib \Connector ;
3+
4+ class Symfony extends \Symfony \Component \HttpKernel \Client
5+ {
6+
7+ /**
8+ * @var boolean
9+ */
10+ private static $ hasPerformedRequest ;
11+
12+ /**
13+ * @var array
14+ */
15+ public $ persistentServices = [];
16+
17+ /**
18+ * @param Request $request
19+ */
20+ protected function doRequest ($ request )
21+ {
22+ $ services = [];
23+ if (self ::$ hasPerformedRequest ) {
24+ $ services = $ this ->persistServices ();
25+ $ this ->kernel = clone $ this ->kernel ;
26+ } else {
27+ self ::$ hasPerformedRequest = true ;
28+ }
29+ $ this ->kernel ->boot ();
30+
31+ $ container = $ this ->kernel ->getContainer ();
32+ if ($ this ->kernel ->getContainer ()->has ('profiler ' )) {
33+ $ container ->get ('profiler ' )->enable ();
34+ }
35+
36+ $ this ->injectPersistedServices ($ services );
37+
38+ return parent ::doRequest ($ request );
39+ }
40+
41+ /**
42+ * @return array
43+ */
44+ protected function persistServices ()
45+ {
46+ $ services = [];
47+ foreach ($ this ->persistentServices as $ serviceName ) {
48+ if (!$ this ->kernel ->getContainer ()->has ($ serviceName )) {
49+ continue ;
50+ }
51+ $ services [$ serviceName ] = $ this ->kernel ->getContainer ()->get ($ serviceName );
52+ }
53+ return $ services ;
54+ }
55+
56+ /**
57+ * @param array $services
58+ */
59+ protected function injectPersistedServices ($ services )
60+ {
61+ foreach ($ services as $ serviceName => $ service ) {
62+ $ this ->kernel ->getContainer ()->set ($ serviceName , $ service );
63+ }
64+ }
65+ }
You can’t perform that action at this time.
0 commit comments