php - PHP echo 源码在哪里实现的?

标签 php echo implementation php-internals language-construct

您可以通过搜索例如PHPAPI(stream_copy_to_stream) 并在 ext/standard/streamsfuncs.c 中找到实现。

如何为像 echo 这样的语言结构做到这一点?

我发现它与 Zend/zend_language_parser.y 中的 T_ECHO 相关联,但无法从那里追踪它是如何工作的。

Zend Engine 在哪里实现回显功能?

最佳答案

给出这个示例程序:

<?php echo 'Hello world!';

我们可以这样获取程序编译后的操作码:

$ phpdbg7.4 -p /tmp/hello.php
function name: (null)
L1-2 {main}() /tmp/hello.php - 0x7fef35ea1000 + 3 ops
 L1    #0     EXT_STMT                                                                              
 L1    #1     ECHO                    "Hello world!"                                                
 L2    #2     RETURN<-1>              1

如您所见, echo 是使用单独的 VM 指令处理的:ZEND_ECHO。每个操作码的处理程序在 Zend/zend_vm_def.h 中定义.搜索“ZEND_ECHO”。

关于php - PHP echo 源码在哪里实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65774079/

相关文章:

php - 在 PHP 中使用 foreach 时获得相同的值

perl - 匹配二维键/字符串数组以在 perl 中搜索的最简单方法?

optimization - 快速二维卷积实现?

linux - 在 linux 中从 groovy 执行 bash 脚本

php - 学习基本网络安全的最佳方法

php - 将警告视为错误

php - 生成随机曲线

PHP 在 txt 文件中搜索并回显整行

algorithm - 缓存感知树的实现

php - Laravel 5 blade 在出现错误而不是抛出异常时显示空白页面