3v4l.org

run code in 300+ PHP versions simultaneously
<?php class GeoHash { const LEVEL_MAX = 26; // 26位已能达到 0.6m 的精度 const MERCATOR_LENGTH = 40075452.74; // 墨卡托投影下地球的赤道周长 private static $LNG_RANGE = ['min' => -180, 'max' => 180]; private static $LAT_RANGE = ['min' => -90, 'max' => 90]; public function geoRadius() { /** * 数据准备:将地理点通过 getHashInt($lng, $lat) 获取其 hashInt 值,存入redis 的 sorted set * 查询: * 1. 通过 getIntLimit($center_lng, $center_lat, $radius); 获取到九个方格的 hashInt 值 和 其 range * 2. 用 ZRANGEBYSCORE key hashInt hashInt+range 获取九个方格内的地址点 * 3. 遍历各个点(九个方格点范围略大),计算距离,返回严格符合要求的点 */ } /** * 获取某点geohash对应的Int值 * * @param $lng * @param $lat * * @return number */ public function getHashInt($lng, $lat) { $bits_lng = $this->getBits($lng, self::$LNG_RANGE); $bits_lat = $this->getBits($lat, self::$LAT_RANGE); $bits = $this->assembleBits($bits_lng, $bits_lat); return $this->getFormalInt($bits); } /** * 测试某一目的点是否在中心点N米范围内 * * @param $center_lng * @param $center_lat * @param $radius * @param $aim_lng * @param $aim_lat */ public function testInRadius($center_lng, $center_lat, $radius, $aim_lng, $aim_lat) { $limit = $this->getIntLimit($center_lng, $center_lat, $radius); $int_aim = $this->getHashInt($aim_lng, $aim_lat); $res = 'not_in_radius'; foreach ($limit['cells'] as $int_cell) { if ($int_aim > $int_cell && $int_aim < $int_cell + $limit['range']) { $res = 'in_radius'; break; } } echo $res . PHP_EOL; } /** * 通过二进制哈希串获取到规范化为52位的正整数 * * @param $bits * * @return number */ private function getFormalInt($bits) { $bits_padded = str_pad($bits, self::LEVEL_MAX * 2, '0'); return bindec($bits_padded); } /** * 获取int值的限制 * * @param $lng * @param $lat * @param $radius * * @return array */ private function getIntLimit($lng, $lat, $radius) { $level = $this->getLevel($radius); $bits_lng = $this->getBits($lng, self::$LNG_RANGE, $level); $bits_lat = $this->getBits($lat, self::$LAT_RANGE, $level); $cells = $this->getRoundCells($bits_lng, $bits_lat); $cells['mid'] = $this->getFormalInt($this->assembleBits($bits_lng, $bits_lat)); $range = $this->getLevelRange($level); $limit = [ 'cells' => $cells, 'range' => $range, ]; return $limit; } /** * 通过经度/纬度 和其范围值获取到其二进制哈希串 * * @param $loc * @param $range * @param int $level * * @return string */ private function getBits($loc, $range, $level = self::LEVEL_MAX) { $bits = ''; for ($i = 0; $i < $level; $i++) { $mid = ($range['min'] + $range['max']) / 2; if ($loc < $mid) { $bits .= '0'; $range = ['min' => $range['min'], 'max' => $mid]; } else { $bits .= '1'; $range = ['min' => $mid, 'max' => $range['max']]; } } return $bits; } /** * 组合经度和纬度的二进制串 * * @param $lng * @param $lat * * @return string */ private function assembleBits($lng, $lat) { $bits_assembled = ''; $arr_lng = str_split($lng); $arr_lat = str_split($lat); for ($i = 0, $c = count($arr_lng); $i < $c; $i++) { $bits_assembled .= $arr_lat[$i] . $arr_lng[$i]; } return $bits_assembled; } /** * 获取中心格子四周的八个格子 * * @param $bits_lng * @param $bits_lat * * @return mixed */ private function getRoundCells($bits_lng, $bits_lat) { $lng_incr = decbin(bindec($bits_lng) + 1); $lng_decr = decbin(bindec($bits_lng) - 1); $lat_incr = decbin(bindec($bits_lat) + 1); $lat_decr = decbin(bindec($bits_lat) - 1); $cells['mid'] = $this->getFormalInt($this->assembleBits($bits_lng, $bits_lat)); $cells['up'] = $this->getFormalInt($this->assembleBits($bits_lng, $lat_incr)); $cells['down'] = $this->getFormalInt($this->assembleBits($bits_lng, $lat_decr)); $cells['left'] = $this->getFormalInt($this->assembleBits($lng_decr, $bits_lat)); $cells['right'] = $this->getFormalInt($this->assembleBits($lng_incr, $bits_lat)); $cells['left_up'] = $this->getFormalInt($this->assembleBits($lng_decr, $lat_incr)); $cells['right_up'] = $this->getFormalInt($this->assembleBits($lng_incr, $lat_incr)); $cells['left_down'] = $this->getFormalInt($this->assembleBits($lng_incr, $lat_decr)); $cells['right_down'] = $this->getFormalInt($this->assembleBits($lng_incr, $lat_decr)); return $cells; } /** * 通过范围值获取geohash层级 * * @param $range_meter * * @return int */ private function getLevel($range_meter) { $level = 0; $global = self::MERCATOR_LENGTH; while ($global > $range_meter) { $global /= 2; $level++; } return $level; } /** * 通过哈希层级获取每一格子的范围 * * @param $level * * @return number */ private function getLevelRange($level) { $range = pow(2, 2 * (self::LEVEL_MAX - $level)); return $range; } } $geohash = new GeoHash(); // 中心地址:新浪总部大厦 $geohash->testInRadius(116.276231, 40.041143, 3000, 116.276301, 40.041532); // 新浪餐厅 in $geohash->testInRadius(116.276317, 40.04168, 3000, 116.27236, 40.04214); // 百度科技园 in $geohash->testInRadius(116.276317, 40.04168, 3000, 116.274826521, 40.0321647826); // 兰园小区 in $geohash->testInRadius(116.276317, 40.04168, 3000, 116.298505, 40.023749); // 上地医院 in $geohash->testInRadius(116.276317, 40.04168, 3000, 116.31763, 40.01522); // 圆明园 not in
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/t4EaP
function name:  (null)
number of ops:  39
compiled vars:  !0 = $geohash
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  188     0  E >   NEW                                              $1      'GeoHash'
          1        DO_FCALL                                      0          
          2        ASSIGN                                                   !0, $1
  190     3        INIT_METHOD_CALL                                         !0, 'testInRadius'
          4        SEND_VAL_EX                                              116.276
          5        SEND_VAL_EX                                              40.0411
          6        SEND_VAL_EX                                              3000
          7        SEND_VAL_EX                                              116.276
          8        SEND_VAL_EX                                              40.0415
          9        DO_FCALL                                      0          
  191    10        INIT_METHOD_CALL                                         !0, 'testInRadius'
         11        SEND_VAL_EX                                              116.276
         12        SEND_VAL_EX                                              40.0417
         13        SEND_VAL_EX                                              3000
         14        SEND_VAL_EX                                              116.272
         15        SEND_VAL_EX                                              40.0421
         16        DO_FCALL                                      0          
  192    17        INIT_METHOD_CALL                                         !0, 'testInRadius'
         18        SEND_VAL_EX                                              116.276
         19        SEND_VAL_EX                                              40.0417
         20        SEND_VAL_EX                                              3000
         21        SEND_VAL_EX                                              116.275
         22        SEND_VAL_EX                                              40.0322
         23        DO_FCALL                                      0          
  193    24        INIT_METHOD_CALL                                         !0, 'testInRadius'
         25        SEND_VAL_EX                                              116.276
         26        SEND_VAL_EX                                              40.0417
         27        SEND_VAL_EX                                              3000
         28        SEND_VAL_EX                                              116.299
         29        SEND_VAL_EX                                              40.0237
         30        DO_FCALL                                      0          
  194    31        INIT_METHOD_CALL                                         !0, 'testInRadius'
         32        SEND_VAL_EX                                              116.276
         33        SEND_VAL_EX                                              40.0417
         34        SEND_VAL_EX                                              3000
         35        SEND_VAL_EX                                              116.318
         36        SEND_VAL_EX                                              40.0152
         37        DO_FCALL                                      0          
         38      > RETURN                                                   1

Class GeoHash:
Function georadius:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/t4EaP
function name:  geoRadius
number of ops:  1
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   18     0  E > > RETURN                                                   null

End of function georadius

Function gethashint:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/t4EaP
function name:  getHashInt
number of ops:  26
compiled vars:  !0 = $lng, !1 = $lat, !2 = $bits_lng, !3 = $bits_lat, !4 = $bits
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   27     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   29     2        INIT_METHOD_CALL                                         'getBits'
          3        SEND_VAR_EX                                              !0
          4        CHECK_FUNC_ARG                                           
          5        FETCH_STATIC_PROP_FUNC_ARG   unknown             $5      'LNG_RANGE'
          6        SEND_FUNC_ARG                                            $5
          7        DO_FCALL                                      0  $6      
          8        ASSIGN                                                   !2, $6
   30     9        INIT_METHOD_CALL                                         'getBits'
         10        SEND_VAR_EX                                              !1
         11        CHECK_FUNC_ARG                                           
         12        FETCH_STATIC_PROP_FUNC_ARG   unknown             $8      'LAT_RANGE'
         13        SEND_FUNC_ARG                                            $8
         14        DO_FCALL                                      0  $9      
         15        ASSIGN                                                   !3, $9
   31    16        INIT_METHOD_CALL                                         'assembleBits'
         17        SEND_VAR_EX                                              !2
         18        SEND_VAR_EX                                              !3
         19        DO_FCALL                                      0  $11     
         20        ASSIGN                                                   !4, $11
   32    21        INIT_METHOD_CALL                                         'getFormalInt'
         22        SEND_VAR_EX                                              !4
         23        DO_FCALL                                      0  $13     
         24      > RETURN                                                   $13
   33    25*     > RETURN                                                   null

End of function gethashint

Function testinradius:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 19, Position 2 = 30
Branch analysis from position: 19
2 jumps found. (Code = 78) Position 1 = 20, Position 2 = 30
Branch analysis from position: 20
2 jumps found. (Code = 46) Position 1 = 22, Position 2 = 26
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 27, Position 2 = 29
Branch analysis from position: 27
1 jumps found. (Code = 42) Position 1 = 30
Branch analysis from position: 30
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 29
1 jumps found. (Code = 42) Position 1 = 19
Branch analysis from position: 19
Branch analysis from position: 26
Branch analysis from position: 30
Branch analysis from position: 30
filename:       /in/t4EaP
function name:  testInRadius
number of ops:  34
compiled vars:  !0 = $center_lng, !1 = $center_lat, !2 = $radius, !3 = $aim_lng, !4 = $aim_lat, !5 = $limit, !6 = $int_aim, !7 = $res, !8 = $int_cell
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   43     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
          3        RECV                                             !3      
          4        RECV                                             !4      
   45     5        INIT_METHOD_CALL                                         'getIntLimit'
          6        SEND_VAR_EX                                              !0
          7        SEND_VAR_EX                                              !1
          8        SEND_VAR_EX                                              !2
          9        DO_FCALL                                      0  $9      
         10        ASSIGN                                                   !5, $9
   46    11        INIT_METHOD_CALL                                         'getHashInt'
         12        SEND_VAR_EX                                              !3
         13        SEND_VAR_EX                                              !4
         14        DO_FCALL                                      0  $11     
         15        ASSIGN                                                   !6, $11
   47    16        ASSIGN                                                   !7, 'not_in_radius'
   48    17        FETCH_DIM_R                                      ~14     !5, 'cells'
         18      > FE_RESET_R                                       $15     ~14, ->30
         19    > > FE_FETCH_R                                               $15, !8, ->30
   49    20    >   IS_SMALLER                                       ~16     !8, !6
         21      > JMPZ_EX                                          ~16     ~16, ->26
         22    >   FETCH_DIM_R                                      ~17     !5, 'range'
         23        ADD                                              ~18     !8, ~17
         24        IS_SMALLER                                       ~19     !6, ~18
         25        BOOL                                             ~16     ~19
         26    > > JMPZ                                                     ~16, ->29
   50    27    >   ASSIGN                                                   !7, 'in_radius'
   51    28      > JMP                                                      ->30
   48    29    > > JMP                                                      ->19
         30    >   FE_FREE                                                  $15
   54    31        CONCAT                                           ~21     !7, '%0A'
         32        ECHO                                                     ~21
   55    33      > RETURN                                                   null

End of function testinradius

Function getformalint:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/t4EaP
function name:  getFormalInt
number of ops:  12
compiled vars:  !0 = $bits, !1 = $bits_padded
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   63     0  E >   RECV                                             !0      
   65     1        INIT_FCALL                                               'str_pad'
          2        SEND_VAR                                                 !0
          3        SEND_VAL                                                 52
          4        SEND_VAL                                                 '0'
          5        DO_ICALL                                         $2      
          6        ASSIGN                                                   !1, $2
   66     7        INIT_FCALL                                               'bindec'
          8        SEND_VAR                                                 !1
          9        DO_ICALL                                         $4      
         10      > RETURN                                                   $4
   67    11*     > RETURN                                                   null

End of function getformalint

Function getintlimit:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/t4EaP
function name:  getIntLimit
number of ops:  46
compiled vars:  !0 = $lng, !1 = $lat, !2 = $radius, !3 = $level, !4 = $bits_lng, !5 = $bits_lat, !6 = $cells, !7 = $range, !8 = $limit
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   77     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
   79     3        INIT_METHOD_CALL                                         'getLevel'
          4        SEND_VAR_EX                                              !2
          5        DO_FCALL                                      0  $9      
          6        ASSIGN                                                   !3, $9
   80     7        INIT_METHOD_CALL                                         'getBits'
          8        SEND_VAR_EX                                              !0
          9        CHECK_FUNC_ARG                                           
         10        FETCH_STATIC_PROP_FUNC_ARG   unknown             $11     'LNG_RANGE'
         11        SEND_FUNC_ARG                                            $11
         12        SEND_VAR_EX                                              !3
         13        DO_FCALL                                      0  $12     
         14        ASSIGN                                                   !4, $12
   81    15        INIT_METHOD_CALL                                         'getBits'
         16        SEND_VAR_EX                                              !1
         17        CHECK_FUNC_ARG                                           
         18        FETCH_STATIC_PROP_FUNC_ARG   unknown             $14     'LAT_RANGE'
         19        SEND_FUNC_ARG                                            $14
         20        SEND_VAR_EX                                              !3
         21        DO_FCALL                                      0  $15     
         22        ASSIGN                                                   !5, $15
   82    23        INIT_METHOD_CALL                                         'getRoundCells'
         24        SEND_VAR_EX                                              !4
         25        SEND_VAR_EX                                              !5
         26        DO_FCALL                                      0  $17     
         27        ASSIGN                                                   !6, $17
   83    28        INIT_METHOD_CALL                                         'getFormalInt'
         29        INIT_METHOD_CALL                                         'assembleBits'
         30        SEND_VAR_EX                                              !4
         31        SEND_VAR_EX                                              !5
         32        DO_FCALL                                      0  $20     
         33        SEND_VAR                                                 $20
         34        DO_FCALL                                      0  $21     
         35        ASSIGN_DIM                                               !6, 'mid'
         36        OP_DATA                                                  $21
   84    37        INIT_METHOD_CALL                                         'getLevelRange'
         38        SEND_VAR_EX                                              !3
         39        DO_FCALL                                      0  $22     
         40        ASSIGN                                                   !7, $22
   86    41        INIT_ARRAY                                       ~24     !6, 'cells'
   87    42        ADD_ARRAY_ELEMENT                                ~24     !7, 'range'
   85    43        ASSIGN                                                   !8, ~24
   89    44      > RETURN                                                   !8
   90    45*     > RETURN                                                   null

End of function getintlimit

Function getbits:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
2 jumps found. (Code = 44) Position 1 = 27, Position 2 = 6
Branch analysis from position: 27
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 6
2 jumps found. (Code = 43) Position 1 = 13, Position 2 = 19
Branch analysis from position: 13
1 jumps found. (Code = 42) Position 1 = 24
Branch analysis from position: 24
2 jumps found. (Code = 44) Position 1 = 27, Position 2 = 6
Branch analysis from position: 27
Branch analysis from position: 6
Branch analysis from position: 19
2 jumps found. (Code = 44) Position 1 = 27, Position 2 = 6
Branch analysis from position: 27
Branch analysis from position: 6
filename:       /in/t4EaP
function name:  getBits
number of ops:  29
compiled vars:  !0 = $loc, !1 = $range, !2 = $level, !3 = $bits, !4 = $i, !5 = $mid
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  100     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV_INIT                                        !2      <const ast>
  102     3        ASSIGN                                                   !3, ''
  103     4        ASSIGN                                                   !4, 0
          5      > JMP                                                      ->25
  104     6    >   FETCH_DIM_R                                      ~8      !1, 'min'
          7        FETCH_DIM_R                                      ~9      !1, 'max'
          8        ADD                                              ~10     ~8, ~9
          9        DIV                                              ~11     ~10, 2
         10        ASSIGN                                                   !5, ~11
  105    11        IS_SMALLER                                               !0, !5
         12      > JMPZ                                                     ~13, ->19
  106    13    >   ASSIGN_OP                                     8          !3, '0'
  107    14        FETCH_DIM_R                                      ~15     !1, 'min'
         15        INIT_ARRAY                                       ~16     ~15, 'min'
         16        ADD_ARRAY_ELEMENT                                ~16     !5, 'max'
         17        ASSIGN                                                   !1, ~16
  105    18      > JMP                                                      ->24
  109    19    >   ASSIGN_OP                                     8          !3, '1'
  110    20        INIT_ARRAY                                       ~19     !5, 'min'
         21        FETCH_DIM_R                                      ~20     !1, 'max'
         22        ADD_ARRAY_ELEMENT                                ~19     ~20, 'max'
         23        ASSIGN                                                   !1, ~19
  103    24    >   PRE_INC                                                  !4
         25    >   IS_SMALLER                                               !4, !2
         26      > JMPNZ                                                    ~23, ->6
  113    27    > > RETURN                                                   !3
  114    28*     > RETURN                                                   null

End of function getbits

Function assemblebits:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 20
Branch analysis from position: 20
2 jumps found. (Code = 44) Position 1 = 22, Position 2 = 15
Branch analysis from position: 22
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 15
2 jumps found. (Code = 44) Position 1 = 22, Position 2 = 15
Branch analysis from position: 22
Branch analysis from position: 15
filename:       /in/t4EaP
function name:  assembleBits
number of ops:  24
compiled vars:  !0 = $lng, !1 = $lat, !2 = $bits_assembled, !3 = $arr_lng, !4 = $arr_lat, !5 = $i, !6 = $c
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  123     0  E >   RECV                                             !0      
          1        RECV                                             !1      
  125     2        ASSIGN                                                   !2, ''
  126     3        INIT_FCALL                                               'str_split'
          4        SEND_VAR                                                 !0
          5        DO_ICALL                                         $8      
          6        ASSIGN                                                   !3, $8
  127     7        INIT_FCALL                                               'str_split'
          8        SEND_VAR                                                 !1
          9        DO_ICALL                                         $10     
         10        ASSIGN                                                   !4, $10
  128    11        ASSIGN                                                   !5, 0
         12        COUNT                                            ~13     !3
         13        ASSIGN                                                   !6, ~13
         14      > JMP                                                      ->20
  129    15    >   FETCH_DIM_R                                      ~15     !4, !5
         16        FETCH_DIM_R                                      ~16     !3, !5
         17        CONCAT                                           ~17     ~15, ~16
         18        ASSIGN_OP                                     8          !2, ~17
  128    19        PRE_INC                                                  !5
         20    >   IS_SMALLER                                               !5, !6
         21      > JMPNZ                                                    ~20, ->15
  131    22    > > RETURN                                                   !2
  132    23*     > RETURN                                                   null

End of function assemblebits

Function getroundcells:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/t4EaP
function name:  getRoundCells
number of ops:  117
compiled vars:  !0 = $bits_lng, !1 = $bits_lat, !2 = $lng_incr, !3 = $lng_decr, !4 = $lat_incr, !5 = $lat_decr, !6 = $cells
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  141     0  E >   RECV                                             !0      
          1        RECV                                             !1      
  143     2        INIT_FCALL                                               'decbin'
          3        INIT_FCALL                                               'bindec'
          4        SEND_VAR                                                 !0
          5        DO_ICALL                                         $7      
          6        ADD                                              ~8      $7, 1
          7        SEND_VAL                                                 ~8
          8        DO_ICALL                                         $9      
          9        ASSIGN                                                   !2, $9
  144    10        INIT_FCALL                                               'decbin'
         11        INIT_FCALL                                               'bindec'
         12        SEND_VAR                                                 !0
         13        DO_ICALL                                         $11     
         14        SUB                                              ~12     $11, 1
         15        SEND_VAL                                                 ~12
         16        DO_ICALL                                         $13     
         17        ASSIGN                                                   !3, $13
  145    18        INIT_FCALL                                               'decbin'
         19        INIT_FCALL                                               'bindec'
         20        SEND_VAR                                                 !1
         21        DO_ICALL                                         $15     
         22        ADD                                              ~16     $15, 1
         23        SEND_VAL                                                 ~16
         24        DO_ICALL                                         $17     
         25        ASSIGN                                                   !4, $17
  146    26        INIT_FCALL                                               'decbin'
         27        INIT_FCALL                                               'bindec'
         28        SEND_VAR                                                 !1
         29        DO_ICALL                                         $19     
         30        SUB                                              ~20     $19, 1
         31        SEND_VAL                                                 ~20
         32        DO_ICALL                                         $21     
         33        ASSIGN                                                   !5, $21
  147    34        INIT_METHOD_CALL                                         'getFormalInt'
         35        INIT_METHOD_CALL                                         'assembleBits'
         36        SEND_VAR                                                 !0
         37        SEND_VAR                                                 !1
         38        DO_FCALL                                      0  $24     
         39        SEND_VAR                                                 $24
         40        DO_FCALL                                      0  $25     
         41        ASSIGN_DIM                                               !6, 'mid'
         42        OP_DATA                                                  $25
  148    43        INIT_METHOD_CALL                                         'getFormalInt'
         44        INIT_METHOD_CALL                                         'assembleBits'
         45        SEND_VAR                                                 !0
         46        SEND_VAR                                                 !4
         47        DO_FCALL                                      0  $27     
         48        SEND_VAR                                                 $27
         49        DO_FCALL                                      0  $28     
         50        ASSIGN_DIM                                               !6, 'up'
         51        OP_DATA                                                  $28
  149    52        INIT_METHOD_CALL                                         'getFormalInt'
         53        INIT_METHOD_CALL                                         'assembleBits'
         54        SEND_VAR                                                 !0
         55        SEND_VAR                                                 !5
         56        DO_FCALL                                      0  $30     
         57        SEND_VAR                                                 $30
         58        DO_FCALL                                      0  $31     
         59        ASSIGN_DIM                                               !6, 'down'
         60        OP_DATA                                                  $31
  150    61        INIT_METHOD_CALL                                         'getFormalInt'
         62        INIT_METHOD_CALL                                         'assembleBits'
         63        SEND_VAR                                                 !3
         64        SEND_VAR                                                 !1
         65        DO_FCALL                                      0  $33     
         66        SEND_VAR                                                 $33
         67        DO_FCALL                                      0  $34     
         68        ASSIGN_DIM                                               !6, 'left'
         69        OP_DATA                                                  $34
  151    70        INIT_METHOD_CALL                                         'getFormalInt'
         71        INIT_METHOD_CALL                                         'assembleBits'
         72        SEND_VAR                                                 !2
         73        SEND_VAR                                                 !1
         74        DO_FCALL                                      0  $36     
         75        SEND_VAR                                                 $36
         76        DO_FCALL                                      0  $37     
         77        ASSIGN_DIM                                               !6, 'right'
         78        OP_DATA                                                  $37
  152    79        INIT_METHOD_CALL                                         'getFormalInt'
         80        INIT_METHOD_CALL                                         'assembleBits'
         81        SEND_VAR                                                 !3
         82        SEND_VAR                                                 !4
         83        DO_FCALL                                      0  $39     
         84        SEND_VAR                                                 $39
         85        DO_FCALL                                      0  $40     
         86        ASSIGN_DIM                                               !6, 'left_up'
         87        OP_DATA                                                  $40
  153    88        INIT_METHOD_CALL                                         'getFormalInt'
         89        INIT_METHOD_CALL                                         'assembleBits'
         90        SEND_VAR                                                 !2
         91        SEND_VAR                                                 !4
         92        DO_FCALL                                      0  $42     
         93        SEND_VAR                                                 $42
         94        DO_FCALL                                      0  $43     
         95        ASSIGN_DIM                                               !6, 'right_up'
         96        OP_DATA                                                  $43
  154    97        INIT_METHOD_CALL                                         'getFormalInt'
         98        INIT_METHOD_CALL                                         'assembleBits'
         99        SEND_VAR                                                 !2
        100        SEND_VAR                                                 !5
        101        DO_FCALL                                      0  $45     
        102        SEND_VAR                                                 $45
        103        DO_FCALL                                      0  $46     
        104        ASSIGN_DIM                                               !6, 'left_down'
        105        OP_DATA                                                  $46
  155   106        INIT_METHOD_CALL                                         'getFormalInt'
        107        INIT_METHOD_CALL                                         'assembleBits'
        108        SEND_VAR                                                 !2
        109        SEND_VAR                                                 !5
        110        DO_FCALL                                      0  $48     
        111        SEND_VAR                                                 $48
        112        DO_FCALL                                      0  $49     
        113        ASSIGN_DIM                                               !6, 'right_down'
        114        OP_DATA                                                  $49
  156   115      > RETURN                                                   !6
  157   116*     >

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
300.85 ms | 1046 KiB | 17 Q