3v4l.org

run code in 300+ PHP versions simultaneously
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bridge\Doctrine\Tests\DependencyInjection\CompilerPass; use Symfony\Bridge\Doctrine\DependencyInjection\CompilerPass\RegisterEventListenersAndSubscribersPass; use Symfony\Component\DependencyInjection\ContainerBuilder; class RegisterEventListenersAndSubscribersPassTest extends \PHPUnit_Framework_TestCase { public function testProcessEventListenersWithPriorities() { $container = $this->createBuilder(); $container ->register('a', 'stdClass') ->addTag('doctrine.event_listener', array( 'event' => 'foo', 'priority' => -5, )) ->addTag('doctrine.event_listener', array( 'event' => 'bar', )) ; $container ->register('b', 'stdClass') ->addTag('doctrine.event_listener', array( 'event' => 'foo', )) ; $this->process($container); $this->assertEquals(array('b', 'a'), $this->getServiceOrder($container, 'addEventListener')); $calls = $container->getDefinition('doctrine.dbal.default_connection.event_manager')->getMethodCalls(); $this->assertEquals(array('foo', 'bar'), $calls[1][1][0]); } public function testProcessEventListenersWithMultipleConnections() { $container = $this->createBuilder(true); $container ->register('a', 'stdClass') ->addTag('doctrine.event_listener', array( 'event' => 'onFlush', )) ; $this->process($container); $callsDefault = $container->getDefinition('doctrine.dbal.default_connection.event_manager')->getMethodCalls(); $this->assertEquals('addEventListener', $callsDefault[0][0]); $this->assertEquals(array('onFlush'), $callsDefault[0][1][0]); $callsSecond = $container->getDefinition('doctrine.dbal.second_connection.event_manager')->getMethodCalls(); $this->assertEquals($callsDefault, $callsSecond); } public function testProcessEventSubscribersWithPriorities() { $container = $this->createBuilder(); $container ->register('a', 'stdClass') ->addTag('doctrine.event_subscriber') ; $container ->register('b', 'stdClass') ->addTag('doctrine.event_subscriber', array( 'priority' => 5, )) ; $container ->register('c', 'stdClass') ->addTag('doctrine.event_subscriber', array( 'priority' => 10, )) ; $container ->register('d', 'stdClass') ->addTag('doctrine.event_subscriber', array( 'priority' => 10, )) ; $container ->register('e', 'stdClass') ->addTag('doctrine.event_subscriber', array( 'priority' => 10, )) ; $this->process($container); $this->assertEquals(array('c', 'd', 'e', 'b', 'a'), $this->getServiceOrder($container, 'addEventSubscriber')); } public function testProcessNoTaggedServices() { $container = $this->createBuilder(true); $this->process($container); $this->assertEquals(array(), $container->getDefinition('doctrine.dbal.default_connection.event_manager')->getMethodCalls()); $this->assertEquals(array(), $container->getDefinition('doctrine.dbal.second_connection.event_manager')->getMethodCalls()); } private function process(ContainerBuilder $container) { $pass = new RegisterEventListenersAndSubscribersPass('doctrine.connections', 'doctrine.dbal.%s_connection.event_manager', 'doctrine'); $pass->process($container); } private function getServiceOrder(ContainerBuilder $container, $method) { $order = array(); foreach ($container->getDefinition('doctrine.dbal.default_connection.event_manager')->getMethodCalls() as $call) { list($name, $arguments) = $call; if ($method !== $name) { continue; } if ('addEventListener' === $name) { $order[] = (string) $arguments[1]; continue; } $order[] = (string) $arguments[0]; } return $order; } private function createBuilder($multipleConnections = false) { $container = new ContainerBuilder(); $connections = array('default' => 'doctrine.dbal.default_connection'); $container->register('doctrine.dbal.default_connection.event_manager', 'stdClass'); $container->register('doctrine.dbal.default_connection', 'stdClass'); if ($multipleConnections) { $container->register('doctrine.dbal.second_connection.event_manager', 'stdClass'); $container->register('doctrine.dbal.second_connection', 'stdClass'); $connections['second'] = 'doctrine.dbal.second_connection'; } $container->setParameter('doctrine.connections', $connections); return $container; } }
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4v1tM
function name:  (null)
number of ops:  2
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   17     0  E >   DECLARE_CLASS                                            'symfony%5Cbridge%5Cdoctrine%5Ctests%5Cdependencyinjection%5Ccompilerpass%5Cregistereventlistenersandsubscriberspasstest', 'phpunit_framework_testcase'
  161     1      > RETURN                                                   1

Class Symfony\Bridge\Doctrine\Tests\DependencyInjection\CompilerPass\RegisterEventListenersAndSubscribersPassTest:
Function testprocesseventlistenerswithpriorities:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4v1tM
function name:  testProcessEventListenersWithPriorities
number of ops:  49
compiled vars:  !0 = $container, !1 = $calls
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   21     0  E >   INIT_METHOD_CALL                                         'createBuilder'
          1        DO_FCALL                                      0  $2      
          2        ASSIGN                                                   !0, $2
   24     3        INIT_METHOD_CALL                                         !0, 'register'
          4        SEND_VAL_EX                                              'a'
          5        SEND_VAL_EX                                              'stdClass'
          6        DO_FCALL                                      0  $4      
   25     7        INIT_METHOD_CALL                                         $4, 'addTag'
          8        SEND_VAL_EX                                              'doctrine.event_listener'
   26     9        SEND_VAL_EX                                              <array>
         10        DO_FCALL                                      0  $5      
   29    11        INIT_METHOD_CALL                                         $5, 'addTag'
         12        SEND_VAL_EX                                              'doctrine.event_listener'
   30    13        SEND_VAL_EX                                              <array>
         14        DO_FCALL                                      0          
   34    15        INIT_METHOD_CALL                                         !0, 'register'
         16        SEND_VAL_EX                                              'b'
         17        SEND_VAL_EX                                              'stdClass'
         18        DO_FCALL                                      0  $7      
   35    19        INIT_METHOD_CALL                                         $7, 'addTag'
         20        SEND_VAL_EX                                              'doctrine.event_listener'
   36    21        SEND_VAL_EX                                              <array>
         22        DO_FCALL                                      0          
   40    23        INIT_METHOD_CALL                                         'process'
         24        SEND_VAR_EX                                              !0
         25        DO_FCALL                                      0          
   41    26        INIT_METHOD_CALL                                         'assertEquals'
         27        SEND_VAL_EX                                              <array>
         28        INIT_METHOD_CALL                                         'getServiceOrder'
         29        SEND_VAR_EX                                              !0
         30        SEND_VAL_EX                                              'addEventListener'
         31        DO_FCALL                                      0  $10     
         32        SEND_VAR_NO_REF_EX                                       $10
         33        DO_FCALL                                      0          
   43    34        INIT_METHOD_CALL                                         !0, 'getDefinition'
         35        SEND_VAL_EX                                              'doctrine.dbal.default_connection.event_manager'
         36        DO_FCALL                                      0  $12     
         37        INIT_METHOD_CALL                                         $12, 'getMethodCalls'
         38        DO_FCALL                                      0  $13     
         39        ASSIGN                                                   !1, $13
   44    40        INIT_METHOD_CALL                                         'assertEquals'
         41        SEND_VAL_EX                                              <array>
         42        CHECK_FUNC_ARG                                           
         43        FETCH_DIM_FUNC_ARG                               $15     !1, 1
         44        FETCH_DIM_FUNC_ARG                               $16     $15, 1
         45        FETCH_DIM_FUNC_ARG                               $17     $16, 0
         46        SEND_FUNC_ARG                                            $17
         47        DO_FCALL                                      0          
   45    48      > RETURN                                                   null

End of function testprocesseventlistenerswithpriorities

Function testprocesseventlistenerswithmultipleconnections:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4v1tM
function name:  testProcessEventListenersWithMultipleConnections
number of ops:  47
compiled vars:  !0 = $container, !1 = $callsDefault, !2 = $callsSecond
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   49     0  E >   INIT_METHOD_CALL                                         'createBuilder'
          1        SEND_VAL_EX                                              <true>
          2        DO_FCALL                                      0  $3      
          3        ASSIGN                                                   !0, $3
   52     4        INIT_METHOD_CALL                                         !0, 'register'
          5        SEND_VAL_EX                                              'a'
          6        SEND_VAL_EX                                              'stdClass'
          7        DO_FCALL                                      0  $5      
   53     8        INIT_METHOD_CALL                                         $5, 'addTag'
          9        SEND_VAL_EX                                              'doctrine.event_listener'
   54    10        SEND_VAL_EX                                              <array>
         11        DO_FCALL                                      0          
   57    12        INIT_METHOD_CALL                                         'process'
         13        SEND_VAR_EX                                              !0
         14        DO_FCALL                                      0          
   59    15        INIT_METHOD_CALL                                         !0, 'getDefinition'
         16        SEND_VAL_EX                                              'doctrine.dbal.default_connection.event_manager'
         17        DO_FCALL                                      0  $8      
         18        INIT_METHOD_CALL                                         $8, 'getMethodCalls'
         19        DO_FCALL                                      0  $9      
         20        ASSIGN                                                   !1, $9
   61    21        INIT_METHOD_CALL                                         'assertEquals'
         22        SEND_VAL_EX                                              'addEventListener'
         23        CHECK_FUNC_ARG                                           
         24        FETCH_DIM_FUNC_ARG                               $11     !1, 0
         25        FETCH_DIM_FUNC_ARG                               $12     $11, 0
         26        SEND_FUNC_ARG                                            $12
         27        DO_FCALL                                      0          
   62    28        INIT_METHOD_CALL                                         'assertEquals'
         29        SEND_VAL_EX                                              <array>
         30        CHECK_FUNC_ARG                                           
         31        FETCH_DIM_FUNC_ARG                               $14     !1, 0
         32        FETCH_DIM_FUNC_ARG                               $15     $14, 1
         33        FETCH_DIM_FUNC_ARG                               $16     $15, 0
         34        SEND_FUNC_ARG                                            $16
         35        DO_FCALL                                      0          
   64    36        INIT_METHOD_CALL                                         !0, 'getDefinition'
         37        SEND_VAL_EX                                              'doctrine.dbal.second_connection.event_manager'
         38        DO_FCALL                                      0  $18     
         39        INIT_METHOD_CALL                                         $18, 'getMethodCalls'
         40        DO_FCALL                                      0  $19     
         41        ASSIGN                                                   !2, $19
   65    42        INIT_METHOD_CALL                                         'assertEquals'
         43        SEND_VAR_EX                                              !1
         44        SEND_VAR_EX                                              !2
         45        DO_FCALL                                      0          
   66    46      > RETURN                                                   null

End of function testprocesseventlistenerswithmultipleconnections

Function testprocesseventsubscriberswithpriorities:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4v1tM
function name:  testProcessEventSubscribersWithPriorities
number of ops:  54
compiled vars:  !0 = $container
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   70     0  E >   INIT_METHOD_CALL                                         'createBuilder'
          1        DO_FCALL                                      0  $1      
          2        ASSIGN                                                   !0, $1
   73     3        INIT_METHOD_CALL                                         !0, 'register'
          4        SEND_VAL_EX                                              'a'
          5        SEND_VAL_EX                                              'stdClass'
          6        DO_FCALL                                      0  $3      
   74     7        INIT_METHOD_CALL                                         $3, 'addTag'
          8        SEND_VAL_EX                                              'doctrine.event_subscriber'
          9        DO_FCALL                                      0          
   77    10        INIT_METHOD_CALL                                         !0, 'register'
         11        SEND_VAL_EX                                              'b'
         12        SEND_VAL_EX                                              'stdClass'
         13        DO_FCALL                                      0  $5      
   78    14        INIT_METHOD_CALL                                         $5, 'addTag'
         15        SEND_VAL_EX                                              'doctrine.event_subscriber'
   79    16        SEND_VAL_EX                                              <array>
         17        DO_FCALL                                      0          
   83    18        INIT_METHOD_CALL                                         !0, 'register'
         19        SEND_VAL_EX                                              'c'
         20        SEND_VAL_EX                                              'stdClass'
         21        DO_FCALL                                      0  $7      
   84    22        INIT_METHOD_CALL                                         $7, 'addTag'
         23        SEND_VAL_EX                                              'doctrine.event_subscriber'
   85    24        SEND_VAL_EX                                              <array>
         25        DO_FCALL                                      0          
   89    26        INIT_METHOD_CALL                                         !0, 'register'
         27        SEND_VAL_EX                                              'd'
         28        SEND_VAL_EX                                              'stdClass'
         29        DO_FCALL                                      0  $9      
   90    30        INIT_METHOD_CALL                                         $9, 'addTag'
         31        SEND_VAL_EX                                              'doctrine.event_subscriber'
   91    32        SEND_VAL_EX                                              <array>
         33        DO_FCALL                                      0          
   95    34        INIT_METHOD_CALL                                         !0, 'register'
         35        SEND_VAL_EX                                              'e'
         36        SEND_VAL_EX                                              'stdClass'
         37        DO_FCALL                                      0  $11     
   96    38        INIT_METHOD_CALL                                         $11, 'addTag'
         39        SEND_VAL_EX                                              'doctrine.event_subscriber'
   97    40        SEND_VAL_EX                                              <array>
         41        DO_FCALL                                      0          
  101    42        INIT_METHOD_CALL                                         'process'
         43        SEND_VAR_EX                                              !0
         44        DO_FCALL                                      0          
  102    45        INIT_METHOD_CALL                                         'assertEquals'
         46        SEND_VAL_EX                                              <array>
         47        INIT_METHOD_CALL                                         'getServiceOrder'
         48        SEND_VAR_EX                                              !0
         49        SEND_VAL_EX                                              'addEventSubscriber'
         50        DO_FCALL                                      0  $14     
         51        SEND_VAR_NO_REF_EX                                       $14
         52        DO_FCALL                                      0          
  103    53      > RETURN                                                   null

End of function testprocesseventsubscriberswithpriorities

Function testprocessnotaggedservices:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4v1tM
function name:  testProcessNoTaggedServices
number of ops:  26
compiled vars:  !0 = $container
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  107     0  E >   INIT_METHOD_CALL                                         'createBuilder'
          1        SEND_VAL_EX                                              <true>
          2        DO_FCALL                                      0  $1      
          3        ASSIGN                                                   !0, $1
  109     4        INIT_METHOD_CALL                                         'process'
          5        SEND_VAR_EX                                              !0
          6        DO_FCALL                                      0          
  111     7        INIT_METHOD_CALL                                         'assertEquals'
          8        SEND_VAL_EX                                              <array>
          9        INIT_METHOD_CALL                                         !0, 'getDefinition'
         10        SEND_VAL_EX                                              'doctrine.dbal.default_connection.event_manager'
         11        DO_FCALL                                      0  $4      
         12        INIT_METHOD_CALL                                         $4, 'getMethodCalls'
         13        DO_FCALL                                      0  $5      
         14        SEND_VAR_NO_REF_EX                                       $5
         15        DO_FCALL                                      0          
  113    16        INIT_METHOD_CALL                                         'assertEquals'
         17        SEND_VAL_EX                                              <array>
         18        INIT_METHOD_CALL                                         !0, 'getDefinition'
         19        SEND_VAL_EX                                              'doctrine.dbal.second_connection.event_manager'
         20        DO_FCALL                                      0  $7      
         21        INIT_METHOD_CALL                                         $7, 'getMethodCalls'
         22        DO_FCALL                                      0  $8      
         23        SEND_VAR_NO_REF_EX                                       $8
         24        DO_FCALL                                      0          
  114    25      > RETURN                                                   null

End of function testprocessnotaggedservices

Function process:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4v1tM
function name:  process
number of ops:  11
compiled vars:  !0 = $container, !1 = $pass
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  116     0  E >   RECV                                             !0      
  118     1        NEW                                              $2      'Symfony%5CBridge%5CDoctrine%5CDependencyInjection%5CCompilerPass%5CRegisterEventListenersAndSubscribersPass'
          2        SEND_VAL_EX                                              'doctrine.connections'
          3        SEND_VAL_EX                                              'doctrine.dbal.%25s_connection.event_manager'
          4        SEND_VAL_EX                                              'doctrine'
          5        DO_FCALL                                      0          
          6        ASSIGN                                                   !1, $2
  119     7        INIT_METHOD_CALL                                         !1, 'process'
          8        SEND_VAR_EX                                              !0
          9        DO_FCALL                                      0          
  120    10      > RETURN                                                   null

End of function process

Function getserviceorder:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 9, Position 2 = 31
Branch analysis from position: 9
2 jumps found. (Code = 78) Position 1 = 10, Position 2 = 31
Branch analysis from position: 10
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 19
Branch analysis from position: 18
1 jumps found. (Code = 42) Position 1 = 9
Branch analysis from position: 9
Branch analysis from position: 19
2 jumps found. (Code = 43) Position 1 = 21, Position 2 = 26
Branch analysis from position: 21
1 jumps found. (Code = 42) Position 1 = 9
Branch analysis from position: 9
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 9
Branch analysis from position: 9
Branch analysis from position: 31
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 31
filename:       /in/4v1tM
function name:  getServiceOrder
number of ops:  34
compiled vars:  !0 = $container, !1 = $method, !2 = $order, !3 = $call, !4 = $name, !5 = $arguments
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  122     0  E >   RECV                                             !0      
          1        RECV                                             !1      
  124     2        ASSIGN                                                   !2, <array>
  125     3        INIT_METHOD_CALL                                         !0, 'getDefinition'
          4        SEND_VAL_EX                                              'doctrine.dbal.default_connection.event_manager'
          5        DO_FCALL                                      0  $7      
          6        INIT_METHOD_CALL                                         $7, 'getMethodCalls'
          7        DO_FCALL                                      0  $8      
          8      > FE_RESET_R                                       $9      $8, ->31
          9    > > FE_FETCH_R                                               $9, !3, ->31
  126    10    >   QM_ASSIGN                                        ~10     !3
         11        FETCH_LIST_R                                     $11     ~10, 0
         12        ASSIGN                                                   !4, $11
         13        FETCH_LIST_R                                     $13     ~10, 1
         14        ASSIGN                                                   !5, $13
         15        FREE                                                     ~10
  127    16        IS_NOT_IDENTICAL                                         !1, !4
         17      > JMPZ                                                     ~15, ->19
  128    18    > > JMP                                                      ->9
  131    19    >   IS_IDENTICAL                                             !4, 'addEventListener'
         20      > JMPZ                                                     ~16, ->26
  132    21    >   FETCH_DIM_R                                      ~18     !5, 1
         22        CAST                                          6  ~19     ~18
         23        ASSIGN_DIM                                               !2
         24        OP_DATA                                                  ~19
  133    25      > JMP                                                      ->9
  136    26    >   FETCH_DIM_R                                      ~21     !5, 0
         27        CAST                                          6  ~22     ~21
         28        ASSIGN_DIM                                               !2
         29        OP_DATA                                                  ~22
  125    30      > JMP                                                      ->9
         31    >   FE_FREE                                                  $9
  139    32      > RETURN                                                   !2
  140    33*     > RETURN                                                   null

End of function getserviceorder

Function createbuilder:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 14, Position 2 = 24
Branch analysis from position: 14
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 24
filename:       /in/4v1tM
function name:  createBuilder
number of ops:  30
compiled vars:  !0 = $multipleConnections, !1 = $container, !2 = $connections
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  142     0  E >   RECV_INIT                                        !0      <false>
  144     1        NEW                                              $3      'Symfony%5CComponent%5CDependencyInjection%5CContainerBuilder'
          2        DO_FCALL                                      0          
          3        ASSIGN                                                   !1, $3
  146     4        ASSIGN                                                   !2, <array>
  148     5        INIT_METHOD_CALL                                         !1, 'register'
          6        SEND_VAL_EX                                              'doctrine.dbal.default_connection.event_manager'
          7        SEND_VAL_EX                                              'stdClass'
          8        DO_FCALL                                      0          
  149     9        INIT_METHOD_CALL                                         !1, 'register'
         10        SEND_VAL_EX                                              'doctrine.dbal.default_connection'
         11        SEND_VAL_EX                                              'stdClass'
         12        DO_FCALL                                      0          
  151    13      > JMPZ                                                     !0, ->24
  152    14    >   INIT_METHOD_CALL                                         !1, 'register'
         15        SEND_VAL_EX                                              'doctrine.dbal.second_connection.event_manager'
         16        SEND_VAL_EX                                              'stdClass'
         17        DO_FCALL                                      0          
  153    18        INIT_METHOD_CALL                                         !1, 'register'
         19        SEND_VAL_EX                                              'doctrine.dbal.second_connection'
         20        SEND_VAL_EX                                              'stdClass'
         21        DO_FCALL                                      0          
  154    22        ASSIGN_DIM                                               !2, 'second'
         23        OP_DATA                                                  'doctrine.dbal.second_connection'
  157    24    >   INIT_METHOD_CALL                                         !1, 'setParameter'
         25        SEND_VAL_EX                                              'doctrine.connections'
         26        SEND_VAR_EX                                              !2
         27        DO_FCALL                                      0          
  159    28      > RETURN                                                   !1
  160    29*     > RETURN                                                   null

End of function createbuilder

End of class Symfony\Bridge\Doctrine\Tests\DependencyInjection\CompilerPass\RegisterEventListenersAndSubscribersPassTest.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
151.42 ms | 1419 KiB | 13 Q