這里閱讀的php版本為PHP-7.1.0 RC3,閱讀代碼的平臺(tái)為linux
實(shí)際上,從這個(gè)函數(shù)開始,就已經(jīng)進(jìn)入到了zend引擎的范圍了。
zend_eval_string_ex(exec_direct, NULL, "Command line code", 1)
實(shí)際上是調(diào)用Zend/zend_execute_API.c
zend_eval_stringl_ex(str, strlen(str), retval_ptr, string_name, handle_exceptions);
再進(jìn)去是調(diào)用
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
其實(shí)這個(gè)函數(shù)主流程并不復(fù)雜。簡(jiǎn)化下來就如下
ZEND_API int zend_eval_stringl(char *str, size_t str_len, zval *retval_ptr, char *string_name) /* {{{ */ {
...
new_op_array = zend_compile_string(&pv, string_name); // 這個(gè)是把php代碼編譯成為opcode的過程 ...
zend_execute(new_op_array, &local_retval);
延伸閱讀
- ssh框架
2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖
2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe
2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】
2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞
2017-07-26
- 從棧不平衡問題 理解 calling convention
2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明
2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解
2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析
2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二)
2017-07-26
學(xué)習(xí)是年輕人改變自己的最好方式