php7执行过程

1. 首先进行词法分析,将源代码切割为多个字符串单元(token)

    借助token_get_all函数获取代码切割后的token

<?php
var_dump(token_get_all("<?php echo \"hello world\";"));

打印结果:
array(5) {
  [0]=>
  array(3) {
    [0]=>
    int(379)
    [1]=>
    string(6) "<?php "
    [2]=>
    int(1)
  }
  [1]=>
  array(3) {
    [0]=>
    int(328)
    [1]=>
    string(4) "echo"
    [2]=>
    int(1)
  }
  [2]=>
  array(3) {
    [0]=>
    int(382)
    [1]=>
    string(1) " "
    [2]=>
    int(1)
  }
  [3]=>
  array(3) {
    [0]=>
    int(323)
    [1]=>
    string(13) ""hello world""
    [2]=>
    int(1)
  }
  [4]=>
  string(1) ";"
}

    数组中的子数组第一个值为token对应的枚举值,第二个值是原始的字符串,第三个值是代码的行号

2. 进行语法分析,将token转为抽象语法树(AST)

    AST是php7新特性

3. 抽象语法树转换为机器指令(opcode)执行

    opcode在虚拟机中执行,指令都对应这相应的处理函数,当虚拟机调用opcode时,会找到相应的处理函数,执行处理

    php的优化 开启opcache,指的是opcodes的缓存,省去源码到opcode的过程,虚拟机可以直接执行缓存的opcode,来提高性能

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值