3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface MediatorInterface { public function send($message, Colleague $from); public function add(Colleague $colleague); } interface SuggestionProviderInterface { public function getSuggestionsFor($data); } class ContactSuggestionProvider implements SuggestionProviderInterface { public function getSuggestionsFor($data) { if (!isset($data['customer'])) { return [ 'contact a', // Suggestion 'contact b', // Suggestion 'contact c' // Suggestion ]; } return []; } } class WorkplaceSuggestionProvider implements SuggestionProviderInterface { public function getSuggestionsFor($data) { if (!isset($data['customer']) && !isset($data['contact'])) { return [ ['workplace a'], // Suggestion ['workplace b'] // Suggestion ]; } return []; } } class PaymentTypeSuggestionProvider implements SuggestionProviderInterface { public function getSuggestionsFor($data) { if (!isset($data['customer']) && !isset($data['contact']) && !isset($data['workplace'])) { return [ ['payment-type a'], // Suggestion ['payment-type b'] // Suggestion ]; } return []; } } abstract class Colleague { /** * @var Mediator */ private $mediator; abstract public function receive($suggestions); public function send($message) { $this->getMediator()->send($message, $this); } public function setMediator(MediatorInterface $mediator) { $this->mediator = $mediator; } public function getMediator() { return $this->mediator; } } class Customer extends Colleague { public function receive($suggestions) {} public function __change() { $this->send(['customer' => 'Ocramius']); } } class Contact extends Colleague { public function receive($suggestions) { var_dump($suggestions); } } class Workplace extends Colleague { public function receive($suggestions) { var_dump($suggestions); } } class PaymentType extends Colleague { public function receive($suggestions) { var_dump($suggestions); } } class SuggestionMediator implements MediatorInterface { private $colleagues = []; private $suggestionProviders = []; public function addSuggestionProvider(SuggestionProviderInterface $provider) { $this->suggestionProviders[] = $provider; } public function add(Colleague $colleague) { $colleague->setMediator($this); $this->colleagues[] = $colleague; } public function send($message, Colleague $from) { foreach ($this->colleagues as $colleague) { // what here I'll have here about providers? if ($from !== $colleague) { $colleague->receive($suggestions); } } } } $customer = new Customer(); $contact = new Contact(); $workplace = new Workplace(); $paymentType = new PaymentType(); $mediator = new SuggestionMediator(); $mediator->addSuggestionProvider(new ContactSuggestionProvider()); $mediator->addSuggestionProvider(new WorkplaceSuggestionProvider()); $mediator->addSuggestionProvider(new PaymentTypeSuggestionProvider()); $mediator->add($customer); $mediator->add($contact); $mediator->add($workplace); $mediator->add($paymentType); $customer->__change();
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  (null)
number of ops:  49
compiled vars:  !0 = $customer, !1 = $contact, !2 = $workplace, !3 = $paymentType, !4 = $mediator
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   14     0  E >   DECLARE_CLASS                                            'contactsuggestionprovider'
   30     1        DECLARE_CLASS                                            'workplacesuggestionprovider'
   45     2        DECLARE_CLASS                                            'paymenttypesuggestionprovider'
  121     3        DECLARE_CLASS                                            'suggestionmediator'
  151     4        NEW                                              $5      'Customer'
          5        DO_FCALL                                      0          
          6        ASSIGN                                                   !0, $5
  152     7        NEW                                              $8      'Contact'
          8        DO_FCALL                                      0          
          9        ASSIGN                                                   !1, $8
  153    10        NEW                                              $11     'Workplace'
         11        DO_FCALL                                      0          
         12        ASSIGN                                                   !2, $11
  154    13        NEW                                              $14     'PaymentType'
         14        DO_FCALL                                      0          
         15        ASSIGN                                                   !3, $14
  156    16        NEW                                              $17     'SuggestionMediator'
         17        DO_FCALL                                      0          
         18        ASSIGN                                                   !4, $17
  157    19        INIT_METHOD_CALL                                         !4, 'addSuggestionProvider'
         20        NEW                                              $20     'ContactSuggestionProvider'
         21        DO_FCALL                                      0          
         22        SEND_VAR_NO_REF_EX                                       $20
         23        DO_FCALL                                      0          
  158    24        INIT_METHOD_CALL                                         !4, 'addSuggestionProvider'
         25        NEW                                              $23     'WorkplaceSuggestionProvider'
         26        DO_FCALL                                      0          
         27        SEND_VAR_NO_REF_EX                                       $23
         28        DO_FCALL                                      0          
  159    29        INIT_METHOD_CALL                                         !4, 'addSuggestionProvider'
         30        NEW                                              $26     'PaymentTypeSuggestionProvider'
         31        DO_FCALL                                      0          
         32        SEND_VAR_NO_REF_EX                                       $26
         33        DO_FCALL                                      0          
  161    34        INIT_METHOD_CALL                                         !4, 'add'
         35        SEND_VAR_EX                                              !0
         36        DO_FCALL                                      0          
  162    37        INIT_METHOD_CALL                                         !4, 'add'
         38        SEND_VAR_EX                                              !1
         39        DO_FCALL                                      0          
  163    40        INIT_METHOD_CALL                                         !4, 'add'
         41        SEND_VAR_EX                                              !2
         42        DO_FCALL                                      0          
  164    43        INIT_METHOD_CALL                                         !4, 'add'
         44        SEND_VAR_EX                                              !3
         45        DO_FCALL                                      0          
  166    46        INIT_METHOD_CALL                                         !0, '__change'
         47        DO_FCALL                                      0          
         48      > RETURN                                                   1

Class MediatorInterface:
Function send:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  send
number of ops:  3
compiled vars:  !0 = $message, !1 = $from
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    5     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2      > RETURN                                                   null

End of function send

Function add:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  add
number of ops:  2
compiled vars:  !0 = $colleague
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    6     0  E >   RECV                                             !0      
          1      > RETURN                                                   null

End of function add

End of class MediatorInterface.

Class SuggestionProviderInterface:
Function getsuggestionsfor:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  getSuggestionsFor
number of ops:  2
compiled vars:  !0 = $data
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   11     0  E >   RECV                                             !0      
          1      > RETURN                                                   null

End of function getsuggestionsfor

End of class SuggestionProviderInterface.

Class ContactSuggestionProvider:
Function getsuggestionsfor:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 5
Branch analysis from position: 4
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 5
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  getSuggestionsFor
number of ops:  7
compiled vars:  !0 = $data
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   16     0  E >   RECV                                             !0      
   18     1        ISSET_ISEMPTY_DIM_OBJ                         0  ~1      !0, 'customer'
          2        BOOL_NOT                                         ~2      ~1
          3      > JMPZ                                                     ~2, ->5
   20     4    > > RETURN                                                   <array>
   26     5    > > RETURN                                                   <array>
   27     6*     > RETURN                                                   null

End of function getsuggestionsfor

End of class ContactSuggestionProvider.

Class WorkplaceSuggestionProvider:
Function getsuggestionsfor:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 46) Position 1 = 4, Position 2 = 7
Branch analysis from position: 4
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 9
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 9
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 7
filename:       /in/NEL3J
function name:  getSuggestionsFor
number of ops:  11
compiled vars:  !0 = $data
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   32     0  E >   RECV                                             !0      
   34     1        ISSET_ISEMPTY_DIM_OBJ                         0  ~1      !0, 'customer'
          2        BOOL_NOT                                         ~2      ~1
          3      > JMPZ_EX                                          ~2      ~2, ->7
          4    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~3      !0, 'contact'
          5        BOOL_NOT                                         ~4      ~3
          6        BOOL                                             ~2      ~4
          7    > > JMPZ                                                     ~2, ->9
   36     8    > > RETURN                                                   <array>
   41     9    > > RETURN                                                   <array>
   42    10*     > RETURN                                                   null

End of function getsuggestionsfor

End of class WorkplaceSuggestionProvider.

Class PaymentTypeSuggestionProvider:
Function getsuggestionsfor:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 46) Position 1 = 4, Position 2 = 7
Branch analysis from position: 4
2 jumps found. (Code = 46) Position 1 = 8, Position 2 = 11
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 13
Branch analysis from position: 12
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 11
Branch analysis from position: 7
filename:       /in/NEL3J
function name:  getSuggestionsFor
number of ops:  15
compiled vars:  !0 = $data
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   47     0  E >   RECV                                             !0      
   49     1        ISSET_ISEMPTY_DIM_OBJ                         0  ~1      !0, 'customer'
          2        BOOL_NOT                                         ~2      ~1
          3      > JMPZ_EX                                          ~2      ~2, ->7
          4    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~3      !0, 'contact'
          5        BOOL_NOT                                         ~4      ~3
          6        BOOL                                             ~2      ~4
          7    > > JMPZ_EX                                          ~2      ~2, ->11
          8    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~5      !0, 'workplace'
          9        BOOL_NOT                                         ~6      ~5
         10        BOOL                                             ~2      ~6
         11    > > JMPZ                                                     ~2, ->13
   51    12    > > RETURN                                                   <array>
   56    13    > > RETURN                                                   <array>
   57    14*     > RETURN                                                   null

End of function getsuggestionsfor

End of class PaymentTypeSuggestionProvider.

Class Colleague:
Function receive:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  receive
number of ops:  2
compiled vars:  !0 = $suggestions
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   68     0  E >   RECV                                             !0      
          1      > RETURN                                                   null

End of function receive

Function send:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  send
number of ops:  9
compiled vars:  !0 = $message
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   70     0  E >   RECV                                             !0      
   72     1        INIT_METHOD_CALL                                         'getMediator'
          2        DO_FCALL                                      0  $1      
          3        INIT_METHOD_CALL                                         $1, 'send'
          4        SEND_VAR_EX                                              !0
          5        FETCH_THIS                                       $2      
          6        SEND_VAR_EX                                              $2
          7        DO_FCALL                                      0          
   73     8      > RETURN                                                   null

End of function send

Function setmediator:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  setMediator
number of ops:  4
compiled vars:  !0 = $mediator
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   75     0  E >   RECV                                             !0      
   77     1        ASSIGN_OBJ                                               'mediator'
          2        OP_DATA                                                  !0
   78     3      > RETURN                                                   null

End of function setmediator

Function getmediator:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  getMediator
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   82     0  E >   FETCH_OBJ_R                                      ~0      'mediator'
          1      > RETURN                                                   ~0
   83     2*     > RETURN                                                   null

End of function getmediator

End of class Colleague.

Class Customer:
Function receive:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  receive
number of ops:  2
compiled vars:  !0 = $suggestions
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   88     0  E >   RECV                                             !0      
   89     1      > RETURN                                                   null

End of function receive

Function __change:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  __change
number of ops:  4
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   93     0  E >   INIT_METHOD_CALL                                         'send'
          1        SEND_VAL_EX                                              <array>
          2        DO_FCALL                                      0          
   94     3      > RETURN                                                   null

End of function __change

Function send:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  send
number of ops:  9
compiled vars:  !0 = $message
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   70     0  E >   RECV                                             !0      
   72     1        INIT_METHOD_CALL                                         'getMediator'
          2        DO_FCALL                                      0  $1      
          3        INIT_METHOD_CALL                                         $1, 'send'
          4        SEND_VAR_EX                                              !0
          5        FETCH_THIS                                       $2      
          6        SEND_VAR_EX                                              $2
          7        DO_FCALL                                      0          
   73     8      > RETURN                                                   null

End of function send

Function setmediator:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  setMediator
number of ops:  4
compiled vars:  !0 = $mediator
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   75     0  E >   RECV                                             !0      
   77     1        ASSIGN_OBJ                                               'mediator'
          2        OP_DATA                                                  !0
   78     3      > RETURN                                                   null

End of function setmediator

Function getmediator:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  getMediator
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   82     0  E >   FETCH_OBJ_R                                      ~0      'mediator'
          1      > RETURN                                                   ~0
   83     2*     > RETURN                                                   null

End of function getmediator

End of class Customer.

Class Contact:
Function receive:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  receive
number of ops:  5
compiled vars:  !0 = $suggestions
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   99     0  E >   RECV                                             !0      
  101     1        INIT_FCALL                                               'var_dump'
          2        SEND_VAR                                                 !0
          3        DO_ICALL                                                 
  102     4      > RETURN                                                   null

End of function receive

Function send:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  send
number of ops:  9
compiled vars:  !0 = $message
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   70     0  E >   RECV                                             !0      
   72     1        INIT_METHOD_CALL                                         'getMediator'
          2        DO_FCALL                                      0  $1      
          3        INIT_METHOD_CALL                                         $1, 'send'
          4        SEND_VAR_EX                                              !0
          5        FETCH_THIS                                       $2      
          6        SEND_VAR_EX                                              $2
          7        DO_FCALL                                      0          
   73     8      > RETURN                                                   null

End of function send

Function setmediator:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  setMediator
number of ops:  4
compiled vars:  !0 = $mediator
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   75     0  E >   RECV                                             !0      
   77     1        ASSIGN_OBJ                                               'mediator'
          2        OP_DATA                                                  !0
   78     3      > RETURN                                                   null

End of function setmediator

Function getmediator:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  getMediator
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   82     0  E >   FETCH_OBJ_R                                      ~0      'mediator'
          1      > RETURN                                                   ~0
   83     2*     > RETURN                                                   null

End of function getmediator

End of class Contact.

Class Workplace:
Function receive:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  receive
number of ops:  5
compiled vars:  !0 = $suggestions
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  107     0  E >   RECV                                             !0      
  109     1        INIT_FCALL                                               'var_dump'
          2        SEND_VAR                                                 !0
          3        DO_ICALL                                                 
  110     4      > RETURN                                                   null

End of function receive

Function send:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  send
number of ops:  9
compiled vars:  !0 = $message
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   70     0  E >   RECV                                             !0      
   72     1        INIT_METHOD_CALL                                         'getMediator'
          2        DO_FCALL                                      0  $1      
          3        INIT_METHOD_CALL                                         $1, 'send'
          4        SEND_VAR_EX                                              !0
          5        FETCH_THIS                                       $2      
          6        SEND_VAR_EX                                              $2
          7        DO_FCALL                                      0          
   73     8      > RETURN                                                   null

End of function send

Function setmediator:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  setMediator
number of ops:  4
compiled vars:  !0 = $mediator
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   75     0  E >   RECV                                             !0      
   77     1        ASSIGN_OBJ                                               'mediator'
          2        OP_DATA                                                  !0
   78     3      > RETURN                                                   null

End of function setmediator

Function getmediator:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  getMediator
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   82     0  E >   FETCH_OBJ_R                                      ~0      'mediator'
          1      > RETURN                                                   ~0
   83     2*     > RETURN                                                   null

End of function getmediator

End of class Workplace.

Class PaymentType:
Function receive:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  receive
number of ops:  5
compiled vars:  !0 = $suggestions
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  115     0  E >   RECV                                             !0      
  117     1        INIT_FCALL                                               'var_dump'
          2        SEND_VAR                                                 !0
          3        DO_ICALL                                                 
  118     4      > RETURN                                                   null

End of function receive

Function send:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  send
number of ops:  9
compiled vars:  !0 = $message
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   70     0  E >   RECV                                             !0      
   72     1        INIT_METHOD_CALL                                         'getMediator'
          2        DO_FCALL                                      0  $1      
          3        INIT_METHOD_CALL                                         $1, 'send'
          4        SEND_VAR_EX                                              !0
          5        FETCH_THIS                                       $2      
          6        SEND_VAR_EX                                              $2
          7        DO_FCALL                                      0          
   73     8      > RETURN                                                   null

End of function send

Function setmediator:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  setMediator
number of ops:  4
compiled vars:  !0 = $mediator
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   75     0  E >   RECV                                             !0      
   77     1        ASSIGN_OBJ                                               'mediator'
          2        OP_DATA                                                  !0
   78     3      > RETURN                                                   null

End of function setmediator

Function getmediator:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  getMediator
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   82     0  E >   FETCH_OBJ_R                                      ~0      'mediator'
          1      > RETURN                                                   ~0
   83     2*     > RETURN                                                   null

End of function getmediator

End of class PaymentType.

Class SuggestionMediator:
Function addsuggestionprovider:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  addSuggestionProvider
number of ops:  5
compiled vars:  !0 = $provider
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  127     0  E >   RECV                                             !0      
  129     1        FETCH_OBJ_W                                      $1      'suggestionProviders'
          2        ASSIGN_DIM                                               $1
          3        OP_DATA                                                  !0
  130     4      > RETURN                                                   null

End of function addsuggestionprovider

Function add:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NEL3J
function name:  add
number of ops:  9
compiled vars:  !0 = $colleague
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  132     0  E >   RECV                                             !0      
  134     1        INIT_METHOD_CALL                                         !0, 'setMediator'
          2        FETCH_THIS                                       $1      
          3        SEND_VAR_EX                                              $1
          4        DO_FCALL                                      0          
  136     5        FETCH_OBJ_W                                      $3      'colleagues'
          6        ASSIGN_DIM                                               $3
          7        OP_DATA                                                  !0
  137     8      > RETURN                                                   null

End of function add

Function send:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 4, Position 2 = 11
Branch analysis from position: 4
2 jumps found. (Code = 78) Position 1 = 5, Position 2 = 11
Branch analysis from position: 5
2 jumps found. (Code = 43) Position 1 = 7, Position 2 = 10
Branch analysis from position: 7
1 jumps found. (Code = 42) Position 1 = 4
Branch analysis from position: 4
Branch analysis from position: 10
Branch analysis from position: 11
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 11
filename:       /in/NEL3J
function name:  send
number of ops:  13
compiled vars:  !0 = $message, !1 = $from, !2 = $colleague, !3 = $suggestions
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  139     0  E >   RECV                                             !0      
          1        RECV                                             !1      
  141     2        FETCH_OBJ_R                                      ~4      'colleagues'
          3      > FE_RESET_R                                       $5      ~4, ->11
          4    > > FE_FETCH_R                                               $5, !2, ->11
  144     5    >   IS_NOT_IDENTICAL                                         !1, !2
          6      > JMPZ                                                     ~6, ->10
  145     7    >   INIT_METHOD_CALL                                         !2, 'receive'
          8        SEND_VAR_EX                                              !3
          9        DO_FCALL                                      0          
  141    10    > > JMP                                                      ->4
         11    >   FE_FREE                                                  $5
  148    12      > RETURN                                    

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
152.82 ms | 1428 KiB | 15 Q