Ben*_*min 0 php opcode language-history
在检查由PHP脚本生成的操作码时,我感到很惊讶,与其他字符串函数(例如)不同str_pad(),strlen()它不是像以前那样的函数调用(如果我没记错的话),但是有专用的STRLEN操作码:
strlen($c);
str_pad($c, 2);
Run Code Online (Sandbox Code Playgroud)
...
8 4 STRLEN ~7 !2
...
9 6 INIT_FCALL 'str_pad'
7 SEND_VAR !2
8 SEND_VAL 2
9 DO_ICALL
Run Code Online (Sandbox Code Playgroud)
https://3v4l.org/9QJQ7/vld#output
此操作码是在哪个PHP版本中引入的?我在任何地方都找不到此信息。
STRLEN操作码是在PHP 7.0中添加的。这是引入它的提交。
还有许多其他具有专用操作码的功能。当前,这些功能是:
is_null,is_bool,is_long,is_int,is_integer,is_float,is_double,is_real,is_string,is_array,is_object,is_resource)intval,floatval,doubleval,strval)definedchr 和 ordcall_user_func 和 call_user_func_arrayin_arraycount(又名sizeof)get_classget_called_classgettypefunc_get_args 和 func_num_argsarray_slicearray_key_exists| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |