我们在分析opcode
对应的handler
的时候,往往会根据opcode
的命名规则来推断具体的handler
。然而,如果我们使用PHP8
的话,我们可以利用jit
的debug
功能来快速的看到opcode
对应的handler
。我举个例子:
有如下代码:
1 | $a = [1, 2, 3]; |
像这个$a[2]
对应的handler
还是非常的长的,我们很难一口气推断出来。我们只需要配置一下php.ini
就可以方便的拿到handler
:
1 | zend_extension=opcache.so |
执行结果如下:
1 | JIT$/Users/hantaohuang/codeDir/cCode/php-src/test.php: ; (/Users/hantaohuang/codeDir/cCode/php-src/test.php) |
可以看到,handler
是ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_HANDLER
。