检查PHP脚本生成的操作码时,我感到很惊讶,与str_pad()
之类的其他字符串函数不同,strlen()
不是以前的函数调用(如果我没记错的话) ,但有专用的STRLEN
操作码:
strlen($c);
str_pad($c, 2);
...
8 4 STRLEN ~7 !2
...
9 6 INIT_FCALL 'str_pad'
7 SEND_VAR !2
8 SEND_VAL 2
9 DO_ICALL
https://3v4l.org/9QJQ7/vld#output
此操作码引入哪个PHP版本?我在任何地方都找不到此信息。
答案 0 :(得分:5)
STRLEN操作码已添加到PHP 7.0中。 Here's the commit that introduced it.
还有许多其他具有专用操作码的功能;目前,这些功能是:
/tmp/.cache
,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
defined
和chr
ord
和call_user_func
call_user_func_array
in_array
(又名count
)sizeof
get_class
get_called_class
gettype
和func_get_args
func_num_args
array_slice