3v4l.org

run code in 300+ PHP versions simultaneously
<?php $userJson = '{ "name":"Vasya", "surname":"Popov", "age":33, "address":{ "street":"Pushkina", "house":"Kolotushkina" } }'; $badUserJson = '{ "name":"Vasya", "surname":"Popov", "age":"33", "address":{ "street":"Pushkina", "house":"Kolotushkina" } }'; $noAgeUserJson = '{ "name":"Vasya", "surname":"Popov", "address":{ "street":"Pushkina", "house":"Kolotushkina" } }'; $noAddressUserJson = '{ "name":"Vasya", "surname":"Popov" }'; /** * @property-read string $name * @property-read string $surname * @property-read AddressData $address */ class UserData {} /** * @property-read string $street * @property-read string $house */ class AddressData {} class JsonValidator { protected const IS_STRING = 'static::isString'; protected const IS_INT = 'static::isInt'; protected static $assertions = []; protected static function isString($value) : void { if (false === is_string($value)) { throw new Exception( 'Wrong json value type. Expected: "string" received: "' . gettype($value) . '" value: "' . $value . '"' ); } } protected static function isInt($value) : void { if (false === is_int($value)) { throw new Exception( 'Wrong json value type. Expected: "int" received: "' . gettype($value) . '" value: "' . $value . '"' ); } } public static function validate(object $data): array { $allErrors = []; set_error_handler(static function($errno, $errstr, $errfile, $errline) { throw new ErrorException($errstr, 0, $errno, $errfile, $errline); }); foreach (static::$assertions as $parameterName => $assertionFunction) { try { $parameterValue = $data->$parameterName; $errors = call_user_func($assertionFunction, $parameterValue); } catch (Throwable $exception) { $allErrors[$parameterName][] = $exception->getMessage(); } if (isset($errors) && count($errors)) { $allErrors[$parameterName] = $errors; } } restore_error_handler(); return $allErrors; } } class UserDataValidator extends JsonValidator { private const IS_ADDRESS = 'AddressDataValidator::validate'; protected static $assertions = [ 'name' => self::IS_STRING, 'surname' => self::IS_STRING, 'age' => self::IS_INT, 'address' => self::IS_ADDRESS, ]; } class AddressDataValidator extends JsonValidator { protected static $assertions = [ 'street' => self::IS_STRING, 'house' => self::IS_STRING, ]; } /** @var UserData $userData */ $userData = json_decode($userJson, false); var_dump($userData); $errors = UserDataValidator::validate($userData); print_r($errors); /** @var UserData $userData */ $userData = json_decode($badUserJson, false); var_dump($userData); $errors = UserDataValidator::validate($userData); print_r($errors); /** @var UserData $userData */ $userData = json_decode($noAgeUserJson, false); var_dump($userData); $errors = UserDataValidator::validate($userData); print_r($errors); /** @var UserData $userData */ $userData = json_decode($noAddressUserJson, false); var_dump($userData); $errors = UserDataValidator::validate($userData); print_r($errors);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/LJB3k
function name:  (null)
number of ops:  65
compiled vars:  !0 = $userJson, !1 = $badUserJson, !2 = $noAgeUserJson, !3 = $noAddressUserJson, !4 = $userData, !5 = $errors
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, '%7B%0A+++%22name%22%3A%22Vasya%22%2C%0A+++%22surname%22%3A%22Popov%22%2C%0A+++%22age%22%3A33%2C%0A+++%22address%22%3A%7B%0A++++++%22street%22%3A%22Pushkina%22%2C%0A++++++%22house%22%3A%22Kolotushkina%22%0A+++%7D%0A%7D'
   13     1        ASSIGN                                                   !1, '%7B%0A+++%22name%22%3A%22Vasya%22%2C%0A+++%22surname%22%3A%22Popov%22%2C%0A+++%22age%22%3A%2233%22%2C%0A+++%22address%22%3A%7B%0A++++++%22street%22%3A%22Pushkina%22%2C%0A++++++%22house%22%3A%22Kolotushkina%22%0A+++%7D%0A%7D'
   23     2        ASSIGN                                                   !2, '%7B%0A+++%22name%22%3A%22Vasya%22%2C%0A+++%22surname%22%3A%22Popov%22%2C%0A%0A+++%22address%22%3A%7B%0A++++++%22street%22%3A%22Pushkina%22%2C%0A++++++%22house%22%3A%22Kolotushkina%22%0A+++%7D%0A%7D'
   33     3        ASSIGN                                                   !3, '%7B%0A+++%22name%22%3A%22Vasya%22%2C%0A+++%22surname%22%3A%22Popov%22%0A%7D'
  124     4        INIT_FCALL                                               'json_decode'
          5        SEND_VAR                                                 !0
          6        SEND_VAL                                                 <false>
          7        DO_ICALL                                         $10     
          8        ASSIGN                                                   !4, $10
  125     9        INIT_FCALL                                               'var_dump'
         10        SEND_VAR                                                 !4
         11        DO_ICALL                                                 
  127    12        INIT_STATIC_METHOD_CALL                                  'UserDataValidator', 'validate'
         13        SEND_VAR                                                 !4
         14        DO_FCALL                                      0  $13     
         15        ASSIGN                                                   !5, $13
  128    16        INIT_FCALL                                               'print_r'
         17        SEND_VAR                                                 !5
         18        DO_ICALL                                                 
  131    19        INIT_FCALL                                               'json_decode'
         20        SEND_VAR                                                 !1
         21        SEND_VAL                                                 <false>
         22        DO_ICALL                                         $16     
         23        ASSIGN                                                   !4, $16
  132    24        INIT_FCALL                                               'var_dump'
         25        SEND_VAR                                                 !4
         26        DO_ICALL                                                 
  134    27        INIT_STATIC_METHOD_CALL                                  'UserDataValidator', 'validate'
         28        SEND_VAR                                                 !4
         29        DO_FCALL                                      0  $19     
         30        ASSIGN                                                   !5, $19
  135    31        INIT_FCALL                                               'print_r'
         32        SEND_VAR                                                 !5
         33        DO_ICALL                                                 
  138    34        INIT_FCALL                                               'json_decode'
         35        SEND_VAR                                                 !2
         36        SEND_VAL                                                 <false>
         37        DO_ICALL                                         $22     
         38        ASSIGN                                                   !4, $22
  139    39        INIT_FCALL                                               'var_dump'
         40        SEND_VAR                                                 !4
         41        DO_ICALL                                                 
  141    42        INIT_STATIC_METHOD_CALL                                  'UserDataValidator', 'validate'
         43        SEND_VAR                                                 !4
         44        DO_FCALL                                      0  $25     
         45        ASSIGN                                                   !5, $25
  142    46        INIT_FCALL                                               'print_r'
         47        SEND_VAR                                                 !5
         48        DO_ICALL                                                 
  145    49        INIT_FCALL                                               'json_decode'
         50        SEND_VAR                                                 !3
         51        SEND_VAL                                                 <false>
         52        DO_ICALL                                         $28     
         53        ASSIGN                                                   !4, $28
  146    54        INIT_FCALL                                               'var_dump'
         55        SEND_VAR                                                 !4
         56        DO_ICALL                                                 
  148    57        INIT_STATIC_METHOD_CALL                                  'UserDataValidator', 'validate'
         58        SEND_VAR                                                 !4
         59        DO_FCALL                                      0  $31     
         60        ASSIGN                                                   !5, $31
  149    61        INIT_FCALL                                               'print_r'
         62        SEND_VAR                                                 !5
         63        DO_ICALL                                                 
         64      > RETURN                                                   1

Class UserData: [no user functions]
Class AddressData: [no user functions]
Class JsonValidator:
Function isstring:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 13
Branch analysis from position: 4
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/LJB3k
function name:  isString
number of ops:  14
compiled vars:  !0 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   58     0  E >   RECV                                             !0      
   60     1        TYPE_CHECK                                   64  ~1      !0
          2        TYPE_CHECK                                    4          ~1
          3      > JMPZ                                                     ~2, ->13
   61     4    >   NEW                                              $3      'Exception'
   62     5        GET_TYPE                                         ~4      !0
          6        CONCAT                                           ~5      'Wrong+json+value+type.+Expected%3A+%22string%22+received%3A+%22', ~4
          7        CONCAT                                           ~6      ~5, '%22+value%3A+%22'
          8        CONCAT                                           ~7      ~6, !0
          9        CONCAT                                           ~8      ~7, '%22'
         10        SEND_VAL_EX                                              ~8
   61    11        DO_FCALL                                      0          
   62    12      > THROW                                         0          $3
   65    13    > > RETURN                                                   null

End of function isstring

Function isint:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 13
Branch analysis from position: 4
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/LJB3k
function name:  isInt
number of ops:  14
compiled vars:  !0 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   67     0  E >   RECV                                             !0      
   69     1        TYPE_CHECK                                   16  ~1      !0
          2        TYPE_CHECK                                    4          ~1
          3      > JMPZ                                                     ~2, ->13
   70     4    >   NEW                                              $3      'Exception'
   71     5        GET_TYPE                                         ~4      !0
          6        CONCAT                                           ~5      'Wrong+json+value+type.+Expected%3A+%22int%22+received%3A+%22', ~4
          7        CONCAT                                           ~6      ~5, '%22+value%3A+%22'
          8        CONCAT                                           ~7      ~6, !0
          9        CONCAT                                           ~8      ~7, '%22'
         10        SEND_VAL_EX                                              ~8
   70    11        DO_FCALL                                      0          
   71    12      > THROW                                         0          $3
   74    13    > > RETURN                                                   null

End of function isint

Function validate:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 8, Position 2 = 31
Branch analysis from position: 8
2 jumps found. (Code = 78) Position 1 = 9, Position 2 = 31
Branch analysis from position: 9
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
2 jumps found. (Code = 46) Position 1 = 25, Position 2 = 27
Branch analysis from position: 25
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 30
Branch analysis from position: 28
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
Branch analysis from position: 30
Branch analysis from position: 27
Branch analysis from position: 31
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 31
Found catch point at position: 17
Branch analysis from position: 17
2 jumps found. (Code = 107) Position 1 = 18, Position 2 = -2
Branch analysis from position: 18
2 jumps found. (Code = 46) Position 1 = 25, Position 2 = 27
Branch analysis from position: 25
Branch analysis from position: 27
filename:       /in/LJB3k
function name:  validate
number of ops:  38
compiled vars:  !0 = $data, !1 = $allErrors, !2 = $assertionFunction, !3 = $parameterName, !4 = $parameterValue, !5 = $errors, !6 = $exception
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   76     0  E >   RECV                                             !0      
   78     1        ASSIGN                                                   !1, <array>
   80     2        INIT_FCALL                                               'set_error_handler'
          3        DECLARE_LAMBDA_FUNCTION                          ~8      [0]
   82     4        SEND_VAL                                                 ~8
   80     5        DO_ICALL                                                 
   84     6        FETCH_STATIC_PROP_R          global lock         ~10     'assertions'
          7      > FE_RESET_R                                       $11     ~10, ->31
          8    > > FE_FETCH_R                                       ~12     $11, !2, ->31
          9    >   ASSIGN                                                   !3, ~12
   86    10        FETCH_OBJ_R                                      ~14     !0, !3
         11        ASSIGN                                                   !4, ~14
   87    12        INIT_USER_CALL                                1          'call_user_func', !2
         13        SEND_USER                                                !4
         14        DO_FCALL                                      0  $16     
         15        ASSIGN                                                   !5, $16
         16      > JMP                                                      ->23
   88    17  E > > CATCH                                       last         'Throwable'
   89    18    >   INIT_METHOD_CALL                                         !6, 'getMessage'
         19        DO_FCALL                                      0  $20     
         20        FETCH_DIM_W                                      $18     !1, !3
         21        ASSIGN_DIM                                               $18
         22        OP_DATA                                                  $20
   92    23    >   ISSET_ISEMPTY_CV                                 ~21     !5
         24      > JMPZ_EX                                          ~21     ~21, ->27
         25    >   COUNT                                            ~22     !5
         26        BOOL                                             ~21     ~22
         27    > > JMPZ                                                     ~21, ->30
   93    28    >   ASSIGN_DIM                                               !1, !3
         29        OP_DATA                                                  !5
   84    30    > > JMP                                                      ->8
         31    >   FE_FREE                                                  $11
   97    32        INIT_FCALL                                               'restore_error_handler'
         33        DO_ICALL                                                 
   99    34        VERIFY_RETURN_TYPE                                       !1
         35      > RETURN                                                   !1
  100    36*       VERIFY_RETURN_TYPE                                       
         37*     > RETURN                                                   null


Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 108) Position 1 = -2
filename:       /in/LJB3k
function name:  {closure}
number of ops:  13
compiled vars:  !0 = $errno, !1 = $errstr, !2 = $errfile, !3 = $errline
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   80     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
          3        RECV                                             !3      
   81     4        NEW                                              $4      'ErrorException'
          5        SEND_VAR_EX                                              !1
          6        SEND_VAL_EX                                              0
          7        SEND_VAR_EX                                              !0
          8        SEND_VAR_EX                                              !2
          9        SEND_VAR_EX                                              !3
         10        DO_FCALL                                      0          
         11      > THROW                                         0          $4
   82    12*     > RETURN                                                   null

End of Dynamic Function 0

End of function validate

End of class JsonValidator.

Class UserDataValidator:
Function isstring:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 13
Branch analysis from position: 4
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/LJB3k
function name:  isString
number of ops:  14
compiled vars:  !0 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   58     0  E >   RECV                                             !0      
   60     1        TYPE_CHECK                                   64  ~1      !0
          2        TYPE_CHECK                                    4          ~1
          3      > JMPZ                                                     ~2, ->13
   61     4    >   NEW                                              $3      'Exception'
   62     5        GET_TYPE                                         ~4      !0
          6        CONCAT                                           ~5      'Wrong+json+value+type.+Expected%3A+%22string%22+received%3A+%22', ~4
          7        CONCAT                                           ~6      ~5, '%22+value%3A+%22'
          8        CONCAT                                           ~7      ~6, !0
          9        CONCAT                                           ~8      ~7, '%22'
         10        SEND_VAL_EX                                              ~8
   61    11        DO_FCALL                                      0          
   62    12      > THROW                                         0          $3
   65    13    > > RETURN                                                   null

End of function isstring

Function isint:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 13
Branch analysis from position: 4
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/LJB3k
function name:  isInt
number of ops:  14
compiled vars:  !0 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   67     0  E >   RECV                                             !0      
   69     1        TYPE_CHECK                                   16  ~1      !0
          2        TYPE_CHECK                                    4          ~1
          3      > JMPZ                                                     ~2, ->13
   70     4    >   NEW                                              $3      'Exception'
   71     5        GET_TYPE                                         ~4      !0
          6        CONCAT                                           ~5      'Wrong+json+value+type.+Expected%3A+%22int%22+received%3A+%22', ~4
          7        CONCAT                                           ~6      ~5, '%22+value%3A+%22'
          8        CONCAT                                           ~7      ~6, !0
          9        CONCAT                                           ~8      ~7, '%22'
         10        SEND_VAL_EX                                              ~8
   70    11        DO_FCALL                                      0          
   71    12      > THROW                                         0          $3
   74    13    > > RETURN                                                   null

End of function isint

Function validate:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 8, Position 2 = 31
Branch analysis from position: 8
2 jumps found. (Code = 78) Position 1 = 9, Position 2 = 31
Branch analysis from position: 9
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
2 jumps found. (Code = 46) Position 1 = 25, Position 2 = 27
Branch analysis from position: 25
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 30
Branch analysis from position: 28
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
Branch analysis from position: 30
Branch analysis from position: 27
Branch analysis from position: 31
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 31
Found catch point at position: 17
Branch analysis from position: 17
2 jumps found. (Code = 107) Position 1 = 18, Position 2 = -2
Branch analysis from position: 18
2 jumps found. (Code = 46) Position 1 = 25, Position 2 = 27
Branch analysis from position: 25
Branch analysis from position: 27
filename:       /in/LJB3k
function name:  validate
number of ops:  38
compiled vars:  !0 = $data, !1 = $allErrors, !2 = $assertionFunction, !3 = $parameterName, !4 = $parameterValue, !5 = $errors, !6 = $exception
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   76     0  E >   RECV                                             !0      
   78     1        ASSIGN                                                   !1, <array>
   80     2        INIT_FCALL                                               'set_error_handler'
          3        DECLARE_LAMBDA_FUNCTION                          ~8      [0]
   82     4        SEND_VAL                                                 ~8
   80     5        DO_ICALL                                                 
   84     6        FETCH_STATIC_PROP_R          global lock         ~10     'assertions'
          7      > FE_RESET_R                                       $11     ~10, ->31
          8    > > FE_FETCH_R                                       ~12     $11, !2, ->31
          9    >   ASSIGN                                                   !3, ~12
   86    10        FETCH_OBJ_R                                      ~14     !0, !3
         11        ASSIGN                                                   !4, ~14
   87    12        INIT_USER_CALL                                1          'call_user_func', !2
         13        SEND_USER                                                !4
         14        DO_FCALL                                      0  $16     
         15        ASSIGN                                                   !5, $16
         16      > JMP                                                      ->23
   88    17  E > > CATCH                                       last         'Throwable'
   89    18    >   INIT_METHOD_CALL                                         !6, 'getMessage'
         19        DO_FCALL                                      0  $20     
         20        FETCH_DIM_W                                      $18     !1, !3
         21        ASSIGN_DIM                                               $18
         22        OP_DATA                                                  $20
   92    23    >   ISSET_ISEMPTY_CV                                 ~21     !5
         24      > JMPZ_EX                                          ~21     ~21, ->27
         25    >   COUNT                                            ~22     !5
         26        BOOL                                             ~21     ~22
         27    > > JMPZ                                                     ~21, ->30
   93    28    >   ASSIGN_DIM                                               !1, !3
         29        OP_DATA                                                  !5
   84    30    > > JMP                                                      ->8
         31    >   FE_FREE                                                  $11
   97    32        INIT_FCALL                                               'restore_error_handler'
         33        DO_ICALL                                                 
   99    34        VERIFY_RETURN_TYPE                                       !1
         35      > RETURN                                                   !1
  100    36*       VERIFY_RETURN_TYPE                                       
         37*     > RETURN                                                   null


Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 108) Position 1 = -2
filename:       /in/LJB3k
function name:  {closure}
number of ops:  13
compiled vars:  !0 = $errno, !1 = $errstr, !2 = $errfile, !3 = $errline
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   80     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
          3        RECV                                             !3      
   81     4        NEW                                              $4      'ErrorException'
          5        SEND_VAR_EX                                              !1
          6        SEND_VAL_EX                                              0
          7        SEND_VAR_EX                                              !0
          8        SEND_VAR_EX                                              !2
          9        SEND_VAR_EX                                              !3
         10        DO_FCALL                                      0          
         11      > THROW                                         0          $4
   82    12*     > RETURN                                                   null

End of Dynamic Function 0

End of function validate

End of class UserDataValidator.

Class AddressDataValidator:
Function isstring:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 13
Branch analysis from position: 4
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/LJB3k
function name:  isString
number of ops:  14
compiled vars:  !0 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   58     0  E >   RECV                                             !0      
   60     1        TYPE_CHECK                                   64  ~1      !0
          2        TYPE_CHECK                                    4          ~1
          3      > JMPZ                                                     ~2, ->13
   61     4    >   NEW                                              $3      'Exception'
   62     5        GET_TYPE                                         ~4      !0
          6        CONCAT                                           ~5      'Wrong+json+value+type.+Expected%3A+%22string%22+received%3A+%22', ~4
          7        CONCAT                                           ~6      ~5, '%22+value%3A+%22'
          8        CONCAT                                           ~7      ~6, !0
          9        CONCAT                                           ~8      ~7, '%22'
         10        SEND_VAL_EX                                              ~8
   61    11        DO_FCALL                                      0          
   62    12      > THROW                                         0          $3
   65    13    > > RETURN                                                   null

End of function isstring

Function isint:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 13
Branch analysis from position: 4
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/LJB3k
function name:  isInt
number of ops:  14
compiled vars:  !0 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   67     0  E >   RECV                                             !0      
   69     1        TYPE_CHECK                                   16  ~1      !0
          2        TYPE_CHECK                                    4          ~1
          3      > JMPZ                                                     ~2, ->13
   70     4    >   NEW                                              $3      'Exception'
   71     5        GET_TYPE                                         ~4      !0
          6        CONCAT                                           ~5      'Wrong+json+value+type.+Expected%3A+%22int%22+received%3A+%22', ~4
          7        CONCAT                                           ~6      ~5, '%22+value%3A+%22'
          8        CONCAT                                           ~7      ~6, !0
          9        CONCAT                                           ~8      ~7, '%22'
         10        SEND_VAL_EX                                              ~8
   70    11        DO_FCALL                                      0          
   71    12      > THROW                                         0          $3
   74    13    > > RETURN                                                   null

End of function isint

Function validate:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 8, Position 2 = 31
Branch analysis from position: 8
2 jumps found. (Code = 78) Position 1 = 9, Position 2 = 31
Branch analysis from position: 9
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
2 jumps found. (Code = 46) Position 1 = 25, Position 2 = 27
Branch analysis from position: 25
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 30
Branch analysis from position: 28
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
Branch analysis from position: 30
Branch analysis from position: 27
Branch analysis from position: 31
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 31
Found catch point at position: 17
Branch analysis from position: 17
2 jumps found. (Code = 107) Position 1 = 18, Position 2 = -2
Branch analysis from position: 18
2 jumps found. (Code = 46) Position 1 = 25, Position 2 = 27
Branch analysis from position: 25
Branch analysis from position: 27
filename:       /in/LJB3k
function name:  validate
number of ops:  38
compiled vars:  !0 = $data, !1 = $allErrors, !2 = $assertionFunction, !3 = $parameterName, !4 = $parameterValue, !5 = $errors, !6 = $exception
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   76     0  E >   RECV                                             !0      
   78     1        ASSIGN                                                   !1, <array>
   80     2        INIT_FCALL                                               'set_error_handler'
          3        DECLARE_LAMBDA_FUNCTION                          ~8      [0]
   82     4        SEND_VAL                                                 ~8
   80     5        DO_ICALL                                                 
   84     6        FETCH_STATIC_PROP_R          global lock         ~10     'assertions'
          7      > FE_RESET_R                                       $11     ~10, ->31
          8    > > FE_FETCH_R                                       ~12     $11, !2, ->31
          9    >   ASSIGN                                                   !3, ~12
   86    10        FETCH_OBJ_R                                      ~14     !0, !3
         11        ASSIGN                                                   !4, ~14
   87    12        INIT_USER_CALL                                1          'call_user_func', !2
         13        SEND_USER                                                !4
         14        DO_FCALL                                      0  $16     
         15        ASSIGN                                                   !5, $16
         16      > JMP                                                      ->23
   88    17  E > > CATCH                                       last         'Throwable'
   89    18 

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
189.17 ms | 1037 KiB | 18 Q