3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Unit { /** * checkMapzone * 检测mapzone * @param mixed $params * @static * @access public * @return void */ public static function checkMapzone($params) { $allRegion = array( array( 'provinceId' => 100000, 'cityIds' => array(), ), ); $mapzone = $params['mapzone']; $mapzone = self::__checkMapzoneFormat($mapzone); $provinceIds = Tools\Common::array_column($mapzone, 'provinceId'); if (in_array(100000, $provinceIds)) { $params['mapzone'] = \App::jsonEncode($allRegion); return $params; } $idToCityMap = \App::getConf('city')['idToCityMap']; foreach ($mapzone as $area) { if (!array_key_exists($area['provinceId'], $idToCityMap)) { throw new UserException("无效的省份"); } foreach ($area['cityIds'] as $cityId) { if (!array_key_exists($cityId, $idToCityMap[$area['provinceId']]['value'])) { throw new UserException("无效城市"); } } } $params['mapzone'] = \App::jsonEncode($mapzone); return $params; } /** * __checkMapzoneFormat * 检测mapzone格式是否正确 * @param mixed $mapzone * @static * @access private * @return void */ public static function __checkMapzoneFormat($mapzone) { $dec = json_decode($mapzone); if (!is_array($dec)) { throw new \Exception("投放地域格式错误"); } $mapzone = json_decode($mapzone, true); foreach ($mapzone as $key => $area) { if (!isset($area['provinceId']) || preg_match(GeneralMatch::POSITIVE_INTEGER, $area['provinceId']) != 1) { throw new \Exception("mapzone格式不正确(provinceId)"); } $mapzone[$key]['provinceId'] = intval($area['provinceId']); if (!isset($area['cityIds']) || !is_array($area['cityIds'])) { throw new \Exception("mapzone格式不正确(cityIds)"); } foreach ($area['cityIds'] as $k => $cityId) { if (preg_match(GeneralMatch::POSITIVE_INTEGER, $cityId) != 1) { throw new \Exception("mapzone格式不正确(cityIds)"); } $mapzone[$key]['cityIds'][$k] = intval($cityId); } } return json_encode($mapzone); } } $params['mapzone'] = '[{"provinceId":"19","cityIds":[59]}]'; $params['mapzone'] = Unit::__checkMapzoneFormat($params); echo $params['mapzone'];
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/iJbJM
function name:  (null)
number of ops:  10
compiled vars:  !0 = $params
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   82     0  E >   ASSIGN_DIM                                               !0, 'mapzone'
          1        OP_DATA                                                  '%5B%7B%22provinceId%22%3A%2219%22%2C%22cityIds%22%3A%5B59%5D%7D%5D'
   83     2        INIT_STATIC_METHOD_CALL                                  'Unit', '__checkMapzoneFormat'
          3        SEND_VAR                                                 !0
          4        DO_FCALL                                      0  $3      
          5        ASSIGN_DIM                                               !0, 'mapzone'
          6        OP_DATA                                                  $3
   84     7        FETCH_DIM_R                                      ~4      !0, 'mapzone'
          8        ECHO                                                     ~4
          9      > RETURN                                                   1

Class Unit:
Function checkmapzone:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 24
Branch analysis from position: 18
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 24
2 jumps found. (Code = 77) Position 1 = 30, Position 2 = 55
Branch analysis from position: 30
2 jumps found. (Code = 78) Position 1 = 31, Position 2 = 55
Branch analysis from position: 31
2 jumps found. (Code = 43) Position 1 = 35, Position 2 = 39
Branch analysis from position: 35
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 39
2 jumps found. (Code = 77) Position 1 = 41, Position 2 = 53
Branch analysis from position: 41
2 jumps found. (Code = 78) Position 1 = 42, Position 2 = 53
Branch analysis from position: 42
2 jumps found. (Code = 43) Position 1 = 48, Position 2 = 52
Branch analysis from position: 48
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 52
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
Branch analysis from position: 53
1 jumps found. (Code = 42) Position 1 = 30
Branch analysis from position: 30
Branch analysis from position: 53
Branch analysis from position: 55
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 55
filename:       /in/iJbJM
function name:  checkMapzone
number of ops:  63
compiled vars:  !0 = $params, !1 = $allRegion, !2 = $mapzone, !3 = $provinceIds, !4 = $idToCityMap, !5 = $area, !6 = $cityId
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   12     0  E >   RECV                                             !0      
   13     1        ASSIGN                                                   !1, <array>
   20     2        FETCH_DIM_R                                      ~8      !0, 'mapzone'
          3        ASSIGN                                                   !2, ~8
   21     4        INIT_STATIC_METHOD_CALL                                  '__checkMapzoneFormat'
          5        SEND_VAR_EX                                              !2
          6        DO_FCALL                                      0  $10     
          7        ASSIGN                                                   !2, $10
   22     8        INIT_STATIC_METHOD_CALL                                  'Tools%5CCommon', 'array_column'
          9        SEND_VAR_EX                                              !2
         10        SEND_VAL_EX                                              'provinceId'
         11        DO_FCALL                                      0  $12     
         12        ASSIGN                                                   !3, $12
   23    13        INIT_FCALL                                               'in_array'
         14        SEND_VAL                                                 100000
         15        SEND_VAR                                                 !3
         16        DO_ICALL                                         $14     
         17      > JMPZ                                                     $14, ->24
   24    18    >   INIT_STATIC_METHOD_CALL                                  'App', 'jsonEncode'
         19        SEND_VAR_EX                                              !1
         20        DO_FCALL                                      0  $16     
         21        ASSIGN_DIM                                               !0, 'mapzone'
         22        OP_DATA                                                  $16
   25    23      > RETURN                                                   !0
   28    24    >   INIT_STATIC_METHOD_CALL                                  'App', 'getConf'
         25        SEND_VAL_EX                                              'city'
         26        DO_FCALL                                      0  $17     
         27        FETCH_DIM_R                                      ~18     $17, 'idToCityMap'
         28        ASSIGN                                                   !4, ~18
   29    29      > FE_RESET_R                                       $20     !2, ->55
         30    > > FE_FETCH_R                                               $20, !5, ->55
   30    31    >   FETCH_DIM_R                                      ~21     !5, 'provinceId'
         32        ARRAY_KEY_EXISTS                                 ~22     ~21, !4
         33        BOOL_NOT                                         ~23     ~22
         34      > JMPZ                                                     ~23, ->39
   31    35    >   NEW                                              $24     'UserException'
         36        SEND_VAL_EX                                              '%E6%97%A0%E6%95%88%E7%9A%84%E7%9C%81%E4%BB%BD'
         37        DO_FCALL                                      0          
         38      > THROW                                         0          $24
   34    39    >   FETCH_DIM_R                                      ~26     !5, 'cityIds'
         40      > FE_RESET_R                                       $27     ~26, ->53
         41    > > FE_FETCH_R                                               $27, !6, ->53
   35    42    >   FETCH_DIM_R                                      ~28     !5, 'provinceId'
         43        FETCH_DIM_R                                      ~29     !4, ~28
         44        FETCH_DIM_R                                      ~30     ~29, 'value'
         45        ARRAY_KEY_EXISTS                                 ~31     !6, ~30
         46        BOOL_NOT                                         ~32     ~31
         47      > JMPZ                                                     ~32, ->52
   36    48    >   NEW                                              $33     'UserException'
         49        SEND_VAL_EX                                              '%E6%97%A0%E6%95%88%E5%9F%8E%E5%B8%82'
         50        DO_FCALL                                      0          
         51      > THROW                                         0          $33
   34    52    > > JMP                                                      ->41
         53    >   FE_FREE                                                  $27
   29    54      > JMP                                                      ->30
         55    >   FE_FREE                                                  $20
   41    56        INIT_STATIC_METHOD_CALL                                  'App', 'jsonEncode'
         57        SEND_VAR_EX                                              !2
         58        DO_FCALL                                      0  $36     
         59        ASSIGN_DIM                                               !0, 'mapzone'
         60        OP_DATA                                                  $36
   43    61      > RETURN                                                   !0
   44    62*     > RETURN                                                   null

End of function checkmapzone

Function __checkmapzoneformat:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 12
Branch analysis from position: 8
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 12
2 jumps found. (Code = 77) Position 1 = 18, Position 2 = 76
Branch analysis from position: 18
2 jumps found. (Code = 78) Position 1 = 19, Position 2 = 76
Branch analysis from position: 19
2 jumps found. (Code = 47) Position 1 = 23, Position 2 = 31
Branch analysis from position: 23
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 36
Branch analysis from position: 32
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 36
2 jumps found. (Code = 47) Position 1 = 44, Position 2 = 48
Branch analysis from position: 44
2 jumps found. (Code = 43) Position 1 = 49, Position 2 = 53
Branch analysis from position: 49
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 53
2 jumps found. (Code = 77) Position 1 = 55, Position 2 = 74
Branch analysis from position: 55
2 jumps found. (Code = 78) Position 1 = 56, Position 2 = 74
Branch analysis from position: 56
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 68
Branch analysis from position: 64
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 68
1 jumps found. (Code = 42) Position 1 = 55
Branch analysis from position: 55
Branch analysis from position: 74
1 jumps found. (Code = 42) Position 1 = 18
Branch analysis from position: 18
Branch analysis from position: 74
Branch analysis from position: 48
Branch analysis from position: 31
Branch analysis from position: 76
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 76
filename:       /in/iJbJM
function name:  __checkMapzoneFormat
number of ops:  82
compiled vars:  !0 = $mapzone, !1 = $dec, !2 = $area, !3 = $key, !4 = $cityId, !5 = $k
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   53     0  E >   RECV                                             !0      
   54     1        INIT_FCALL                                               'json_decode'
          2        SEND_VAR                                                 !0
          3        DO_ICALL                                         $6      
          4        ASSIGN                                                   !1, $6
   55     5        TYPE_CHECK                                  128  ~8      !1
          6        BOOL_NOT                                         ~9      ~8
          7      > JMPZ                                                     ~9, ->12
   56     8    >   NEW                                              $10     'Exception'
          9        SEND_VAL_EX                                              '%E6%8A%95%E6%94%BE%E5%9C%B0%E5%9F%9F%E6%A0%BC%E5%BC%8F%E9%94%99%E8%AF%AF'
         10        DO_FCALL                                      0          
         11      > THROW                                         0          $10
   59    12    >   INIT_FCALL                                               'json_decode'
         13        SEND_VAR                                                 !0
         14        SEND_VAL                                                 <true>
         15        DO_ICALL                                         $12     
         16        ASSIGN                                                   !0, $12
   60    17      > FE_RESET_R                                       $14     !0, ->76
         18    > > FE_FETCH_R                                       ~15     $14, !2, ->76
         19    >   ASSIGN                                                   !3, ~15
   61    20        ISSET_ISEMPTY_DIM_OBJ                         0  ~17     !2, 'provinceId'
         21        BOOL_NOT                                         ~18     ~17
         22      > JMPNZ_EX                                         ~18     ~18, ->31
         23    >   INIT_FCALL                                               'preg_match'
         24        FETCH_CLASS_CONSTANT                             ~19     'GeneralMatch', 'POSITIVE_INTEGER'
         25        SEND_VAL                                                 ~19
         26        FETCH_DIM_R                                      ~20     !2, 'provinceId'
         27        SEND_VAL                                                 ~20
         28        DO_ICALL                                         $21     
         29        IS_NOT_EQUAL                                     ~22     $21, 1
         30        BOOL                                             ~18     ~22
         31    > > JMPZ                                                     ~18, ->36
   62    32    >   NEW                                              $23     'Exception'
         33        SEND_VAL_EX                                              'mapzone%E6%A0%BC%E5%BC%8F%E4%B8%8D%E6%AD%A3%E7%A1%AE%28provinceId%29'
         34        DO_FCALL                                      0          
         35      > THROW                                         0          $23
   64    36    >   FETCH_DIM_R                                      ~27     !2, 'provinceId'
         37        CAST                                          4  ~28     ~27
         38        FETCH_DIM_W                                      $25     !0, !3
         39        ASSIGN_DIM                                               $25, 'provinceId'
         40        OP_DATA                                                  ~28
   66    41        ISSET_ISEMPTY_DIM_OBJ                         0  ~29     !2, 'cityIds'
         42        BOOL_NOT                                         ~30     ~29
         43      > JMPNZ_EX                                         ~30     ~30, ->48
         44    >   FETCH_DIM_R                                      ~31     !2, 'cityIds'
         45        TYPE_CHECK                                  128  ~32     ~31
         46        BOOL_NOT                                         ~33     ~32
         47        BOOL                                             ~30     ~33
         48    > > JMPZ                                                     ~30, ->53
   67    49    >   NEW                                              $34     'Exception'
         50        SEND_VAL_EX                                              'mapzone%E6%A0%BC%E5%BC%8F%E4%B8%8D%E6%AD%A3%E7%A1%AE%28cityIds%29'
         51        DO_FCALL                                      0          
         52      > THROW                                         0          $34
   69    53    >   FETCH_DIM_R                                      ~36     !2, 'cityIds'
         54      > FE_RESET_R                                       $37     ~36, ->74
         55    > > FE_FETCH_R                                       ~38     $37, !4, ->74
         56    >   ASSIGN                                                   !5, ~38
   70    57        INIT_FCALL                                               'preg_match'
         58        FETCH_CLASS_CONSTANT                             ~40     'GeneralMatch', 'POSITIVE_INTEGER'
         59        SEND_VAL                                                 ~40
         60        SEND_VAR                                                 !4
         61        DO_ICALL                                         $41     
         62        IS_NOT_EQUAL                                             $41, 1
         63      > JMPZ                                                     ~42, ->68
   71    64    >   NEW                                              $43     'Exception'
         65        SEND_VAL_EX                                              'mapzone%E6%A0%BC%E5%BC%8F%E4%B8%8D%E6%AD%A3%E7%A1%AE%28cityIds%29'
         66        DO_FCALL                                      0          
         67      > THROW                                         0          $43
   73    68    >   CAST                                          4  ~48     !4
         69        FETCH_DIM_W                                      $45     !0, !3
         70        FETCH_DIM_W                                      $46     $45, 'cityIds'
         71        ASSIGN_DIM                                               $46, !5
         72        OP_DATA                                                  ~48
   69    73      > JMP                                                      ->55
         74    >   FE_FREE                                                  $37
   60    75      > JMP                                                      ->18
         76    >   FE_FREE                                                  $14
   77    77        INIT_FCALL                                               'json_encode'
         78        SEND_VAR                                                 !0
         79        DO_ICALL                                         $49     
         80      > RETURN                                                   $49
   78    81*     > RETURN                                                   null

End of function __checkmapzoneformat

End of class Unit.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
178.94 ms | 1412 KiB | 21 Q