原文链接:http://www.cnblogs.com/yjf512/p/6108444.html 注意:本文适合在电脑上阅读。 这里阅读的php版本为PHP-7.1.0 RC3,阅读代码的平台为linux 实际上,从这个函数开始,就已经进入到了zend引擎的范围了。 zend_eval_string_ex(exec_direct, NULL, "Command line code", 1)
实际上是调用Zend/zend_execute_API.c zend_eval_stringl_ex(str, strlen(str), retval_ptr, string_name, handle_exceptions);
再进去是调用 result = zend_eval_stringl(str, str_len, retval_ptr, string_name);
这里的retval_ptr为NULL,string_name为"Command line code", str为"echo 12;" zend_eval_stringl其实这个函数主流程并不复杂。简化下来就如下 ZEND_API int zend_eval_stringl(char *str, size_t str_len, zval *retval_ptr, char *string_name) /* {{{ */{
...
new_op_array = zend_compile_string( |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|