3v4l.org

run code in 300+ PHP versions simultaneously
<?php declare(strict_types=1); namespace Ws\Shared\Users { interface SearchByIdData { public function getId(): int; } abstract class Users { // Add as many abstract methods as needed for any object you need. abstract public function buildSearchByIdData(int $value, string $other): SearchByIdData; public function searchById(int $id, string $otherParam) { $filter = $this->buildSearchByIdData($id, $otherParam); echo 'Do something with ' . get_class($filter) . "\n"; var_dump($filter); } // All other public methods using abstract methods to create objects } } namespace Ws\V1\Users { use Ws\Shared\Users\SearchByIdData as SearchByIdDataInterface; use Ws\Shared\Users\Users as BaseUsers; class SearchByIdDataOption1 { public function __construct(public string $value) {} } class SearchByIdDataOption2 { public function __construct(public string $value) {} } class SearchByIdData implements SearchByIdDataInterface { public function __construct( private int $id, private SearchByIdDataOption1|SearchByIdDataOption2 $option ) {} public function getId(): int { return $this->id; } } class Users extends BaseUsers { public function buildSearchByIdData(int $value, string $other): SearchByIdDataInterface { $option = ($other === 'yes') ? new SearchByIdDataOption1($other) : new SearchByIdDataOption2($other); return new SearchByIdData($value, $option); } } } namespace Ws\V2\Users { use Ws\Shared\Users\SearchByIdData as SearchByIdDataInterface; use Ws\Shared\Users\Users as BaseUsers; class SearchByIdDataOption1 { public function __construct(public string $value) {} } class SearchByIdDataOption2 { public function __construct(public string $value) {} } class SearchByIdData implements SearchByIdDataInterface { public function __construct( private int $id, private SearchByIdDataOption1|SearchByIdDataOption2 $option ) {} public function getId(): int { return $this->id; } } class Users extends BaseUsers { public function buildSearchByIdData(int $value, string $other): SearchByIdDataInterface { $option = ($other === 'yes') ? new SearchByIdDataOption1($other) : new SearchByIdDataOption2($other); return new SearchByIdData($value, $option); } } } namespace Somewhere\Else { // Using v1: $v1Users = new \Ws\V1\Users\Users(); $v1Users->searchById(1, 'yes'); $v1Users->searchById(1, 'maybe'); // Using v2: $v2Users = new \Ws\V2\Users\Users(); $v2Users->searchById(1, 'yes'); $v2Users->searchById(1, 'maybe'); }
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  (null)
number of ops:  25
compiled vars:  !0 = $v1Users, !1 = $v2Users
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   45     0  E >   DECLARE_CLASS                                            'ws%5Cv1%5Cusers%5Csearchbyiddata'
   84     1        DECLARE_CLASS                                            'ws%5Cv2%5Cusers%5Csearchbyiddata'
  111     2        NEW                                              $2      'Ws%5CV1%5CUsers%5CUsers'
          3        DO_FCALL                                      0          
          4        ASSIGN                                                   !0, $2
  112     5        INIT_METHOD_CALL                                         !0, 'searchById'
          6        SEND_VAL_EX                                              1
          7        SEND_VAL_EX                                              'yes'
          8        DO_FCALL                                      0          
  113     9        INIT_METHOD_CALL                                         !0, 'searchById'
         10        SEND_VAL_EX                                              1
         11        SEND_VAL_EX                                              'maybe'
         12        DO_FCALL                                      0          
  116    13        NEW                                              $7      'Ws%5CV2%5CUsers%5CUsers'
         14        DO_FCALL                                      0          
         15        ASSIGN                                                   !1, $7
  117    16        INIT_METHOD_CALL                                         !1, 'searchById'
         17        SEND_VAL_EX                                              1
         18        SEND_VAL_EX                                              'yes'
         19        DO_FCALL                                      0          
  118    20        INIT_METHOD_CALL                                         !1, 'searchById'
         21        SEND_VAL_EX                                              1
         22        SEND_VAL_EX                                              'maybe'
         23        DO_FCALL                                      0          
  119    24      > RETURN                                                   1

Class Ws\Shared\Users\SearchByIdData:
Function getid:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  getId
number of ops:  2
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    9     0  E >   VERIFY_RETURN_TYPE                                       
          1      > RETURN                                                   null

End of function getid

End of class Ws\Shared\Users\SearchByIdData.

Class Ws\Shared\Users\Users:
Function buildsearchbyiddata:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  buildSearchByIdData
number of ops:  4
compiled vars:  !0 = $value, !1 = $other
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   15     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        VERIFY_RETURN_TYPE                                       
          3      > RETURN                                                   null

End of function buildsearchbyiddata

Function searchbyid:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  searchById
number of ops:  17
compiled vars:  !0 = $id, !1 = $otherParam, !2 = $filter
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   17     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   19     2        INIT_METHOD_CALL                                         'buildSearchByIdData'
          3        SEND_VAR_EX                                              !0
          4        SEND_VAR_EX                                              !1
          5        DO_FCALL                                      0  $3      
          6        ASSIGN                                                   !2, $3
   21     7        INIT_NS_FCALL_BY_NAME                                    'Ws%5CShared%5CUsers%5Cget_class'
          8        SEND_VAR_EX                                              !2
          9        DO_FCALL                                      0  $5      
         10        CONCAT                                           ~6      'Do+something+with+', $5
         11        CONCAT                                           ~7      ~6, '%0A'
         12        ECHO                                                     ~7
   22    13        INIT_NS_FCALL_BY_NAME                                    'Ws%5CShared%5CUsers%5Cvar_dump'
         14        SEND_VAR_EX                                              !2
         15        DO_FCALL                                      0          
   23    16      > RETURN                                                   null

End of function searchbyid

End of class Ws\Shared\Users\Users.

Class Ws\V1\Users\SearchByIdDataOption1:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  __construct
number of ops:  4
compiled vars:  !0 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   37     0  E >   RECV                                             !0      
          1        ASSIGN_OBJ                                               'value'
          2        OP_DATA                                                  !0
          3      > RETURN                                                   null

End of function __construct

End of class Ws\V1\Users\SearchByIdDataOption1.

Class Ws\V1\Users\SearchByIdDataOption2:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  __construct
number of ops:  4
compiled vars:  !0 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   42     0  E >   RECV                                             !0      
          1        ASSIGN_OBJ                                               'value'
          2        OP_DATA                                                  !0
          3      > RETURN                                                   null

End of function __construct

End of class Ws\V1\Users\SearchByIdDataOption2.

Class Ws\V1\Users\SearchByIdData:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  __construct
number of ops:  7
compiled vars:  !0 = $id, !1 = $option
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   47     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        ASSIGN_OBJ                                               'id'
          3        OP_DATA                                                  !0
          4        ASSIGN_OBJ                                               'option'
          5        OP_DATA                                                  !1
   50     6      > RETURN                                                   null

End of function __construct

Function getid:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  getId
number of ops:  5
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   54     0  E >   FETCH_OBJ_R                                      ~0      'id'
          1        VERIFY_RETURN_TYPE                                       ~0
          2      > RETURN                                                   ~0
   55     3*       VERIFY_RETURN_TYPE                                       
          4*     > RETURN                                                   null

End of function getid

End of class Ws\V1\Users\SearchByIdData.

Class Ws\V1\Users\Users:
Function buildsearchbyiddata:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 9
Branch analysis from position: 4
1 jumps found. (Code = 42) Position 1 = 13
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 9
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  buildSearchByIdData
number of ops:  22
compiled vars:  !0 = $value, !1 = $other, !2 = $option
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   60     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   62     2        IS_IDENTICAL                                             !1, 'yes'
          3      > JMPZ                                                     ~3, ->9
          4    >   NEW                                              $4      'Ws%5CV1%5CUsers%5CSearchByIdDataOption1'
          5        SEND_VAR_EX                                              !1
          6        DO_FCALL                                      0          
          7        QM_ASSIGN                                        ~6      $4
          8      > JMP                                                      ->13
          9    >   NEW                                              $7      'Ws%5CV1%5CUsers%5CSearchByIdDataOption2'
         10        SEND_VAR_EX                                              !1
         11        DO_FCALL                                      0          
         12        QM_ASSIGN                                        ~6      $7
         13    >   ASSIGN                                                   !2, ~6
   64    14        NEW                                              $10     'Ws%5CV1%5CUsers%5CSearchByIdData'
         15        SEND_VAR_EX                                              !0
         16        SEND_VAR_EX                                              !2
         17        DO_FCALL                                      0          
         18        VERIFY_RETURN_TYPE                                       $10
         19      > RETURN                                                   $10
   65    20*       VERIFY_RETURN_TYPE                                       
         21*     > RETURN                                                   null

End of function buildsearchbyiddata

Function searchbyid:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  searchById
number of ops:  17
compiled vars:  !0 = $id, !1 = $otherParam, !2 = $filter
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   17     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   19     2        INIT_METHOD_CALL                                         'buildSearchByIdData'
          3        SEND_VAR_EX                                              !0
          4        SEND_VAR_EX                                              !1
          5        DO_FCALL                                      0  $3      
          6        ASSIGN                                                   !2, $3
   21     7        INIT_NS_FCALL_BY_NAME                                    'Ws%5CShared%5CUsers%5Cget_class'
          8        SEND_VAR_EX                                              !2
          9        DO_FCALL                                      0  $5      
         10        CONCAT                                           ~6      'Do+something+with+', $5
         11        CONCAT                                           ~7      ~6, '%0A'
         12        ECHO                                                     ~7
   22    13        INIT_NS_FCALL_BY_NAME                                    'Ws%5CShared%5CUsers%5Cvar_dump'
         14        SEND_VAR_EX                                              !2
         15        DO_FCALL                                      0          
   23    16      > RETURN                                                   null

End of function searchbyid

End of class Ws\V1\Users\Users.

Class Ws\V2\Users\SearchByIdDataOption1:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  __construct
number of ops:  4
compiled vars:  !0 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   76     0  E >   RECV                                             !0      
          1        ASSIGN_OBJ                                               'value'
          2        OP_DATA                                                  !0
          3      > RETURN                                                   null

End of function __construct

End of class Ws\V2\Users\SearchByIdDataOption1.

Class Ws\V2\Users\SearchByIdDataOption2:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  __construct
number of ops:  4
compiled vars:  !0 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   81     0  E >   RECV                                             !0      
          1        ASSIGN_OBJ                                               'value'
          2        OP_DATA                                                  !0
          3      > RETURN                                                   null

End of function __construct

End of class Ws\V2\Users\SearchByIdDataOption2.

Class Ws\V2\Users\SearchByIdData:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  __construct
number of ops:  7
compiled vars:  !0 = $id, !1 = $option
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   86     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        ASSIGN_OBJ                                               'id'
          3        OP_DATA                                                  !0
          4        ASSIGN_OBJ                                               'option'
          5        OP_DATA                                                  !1
   89     6      > RETURN                                                   null

End of function __construct

Function getid:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  getId
number of ops:  5
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   93     0  E >   FETCH_OBJ_R                                      ~0      'id'
          1        VERIFY_RETURN_TYPE                                       ~0
          2      > RETURN                                                   ~0
   94     3*       VERIFY_RETURN_TYPE                                       
          4*     > RETURN                                                   null

End of function getid

End of class Ws\V2\Users\SearchByIdData.

Class Ws\V2\Users\Users:
Function buildsearchbyiddata:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 9
Branch analysis from position: 4
1 jumps found. (Code = 42) Position 1 = 13
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 9
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  buildSearchByIdData
number of ops:  22
compiled vars:  !0 = $value, !1 = $other, !2 = $option
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   99     0  E >   RECV                                             !0      
          1        RECV                                             !1      
  101     2        IS_IDENTICAL                                             !1, 'yes'
          3      > JMPZ                                                     ~3, ->9
          4    >   NEW                                              $4      'Ws%5CV2%5CUsers%5CSearchByIdDataOption1'
          5        SEND_VAR_EX                                              !1
          6        DO_FCALL                                      0          
          7        QM_ASSIGN                                        ~6      $4
          8      > JMP                                                      ->13
          9    >   NEW                                              $7      'Ws%5CV2%5CUsers%5CSearchByIdDataOption2'
         10        SEND_VAR_EX                                              !1
         11        DO_FCALL                                      0          
         12        QM_ASSIGN                                        ~6      $7
         13    >   ASSIGN                                                   !2, ~6
  103    14        NEW                                              $10     'Ws%5CV2%5CUsers%5CSearchByIdData'
         15        SEND_VAR_EX                                              !0
         16        SEND_VAR_EX                                              !2
         17        DO_FCALL                                      0          
         18        VERIFY_RETURN_TYPE                                       $10
         19      > RETURN                                                   $10
  104    20*       VERIFY_RETURN_TYPE                                       
         21*     > RETURN                                                   null

End of function buildsearchbyiddata

Function searchbyid:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Lelv7
function name:  searchById
number of ops:  17
compiled vars:  !0 = $id, !1 = $otherParam, !2 = $filter
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   17     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   19     2        INIT_METHOD_CALL                                         'buildSearchByIdData'
          3        SEND_VAR_EX                                              !0
          4        SEND_VAR_EX                                              !1
          5        DO_FCALL                                      0  $3      
          6        ASSIGN                                                   !2, $3
   21     7        INIT_NS_FCALL_BY_NAME                                    'Ws%5CShared%5CUsers%5Cget_class'
          8        SEND_VAR_EX                                              !2
          9        DO_FCALL                                      0  $5      
         10        CONCAT                                           ~6      'Do+something+with+', $5
         11        CONCAT                                           ~7      ~6, '%0A'
         12        ECHO                                                     ~7
   22    13        INIT_NS_FCALL_BY_NAME                                    'Ws%5CShared%5CUsers%5Cvar_dump'
         14        SEND_VAR_EX                                              !2
         15        DO_FCALL                                      0          
   23    16      > RETURN                                                   null

End of function searchbyid

End of class Ws\V2\Users\Users.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
154.82 ms | 1032 KiB | 15 Q