0

在检查 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 版本中引入的?我在任何地方都找不到这些信息。

4

1 回答 1

6

在 PHP 7.0 中添加了STRLEN 操作码。这是介绍它的提交。

还有许多其他具有专用操作码的功能;目前,这些功能是:

  • 某些类型检查函数 ( 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
  • chrord
  • call_user_funccall_user_func_array
  • in_array
  • count(又名sizeof
  • get_class
  • get_called_class
  • gettype
  • func_get_argsfunc_num_args
  • array_slice
  • array_key_exists
于 2019-04-25T17:49:56.327 回答