1. phpdbg_break_function() を使用して、この testFunc() メソッドで断点を設定します。コード内でこの関数が使用されている場合、この点に入る可能性があります。
プロンプト> r [testFunc() のブレークポイント #0、/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php:11、ヒット数: 1] >00011: 関数 testFunc(){ 00012: グローバル $i; 00013: $i += 3; プロンプト> s [L12 0x109eef620 EXT_STMT /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug相互運動扩展.php] >00012: グローバル $i; 00013: $i += 3; 00014: echo "これは testFunc! i:" . $i、PHP_EOL; プロンプト> s [L12 0x109eef640 BIND_GLOBAL $i "i" /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug相互運動扩展.php] [L13 0x109eef660 EXT_STMT /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug相互運動扩展.php] >00013: $i += 3; 00014: echo "これは testFunc! i:" . $i、PHP_EOL; 00015: }
2. 2 回のステップが直接実行され、グローバル $i に対応するオペコード オペレーションが BIND_GLOBAL であることがわかります。
プロンプト> s [L13 0x109eef680 ASSIGN_ADD $i 3 /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug相互運動扩展.php] [L14 0x109eef6a0 EXT_STMT /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug相互運動扩展.php] >00014: echo "これは testFunc! i:" 。 $i、PHP_EOL; 00015: } 00016: プロンプト> s [L14 0x109eef6c0 CONCAT "これは testFunc!"+ $i ~1 /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug相互運動扩展.php] [L14 0x109eef6e0 ECHO ~1 /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug相互運動扩展.php] これがtestFuncです!私:4 [L14 0x109eef700 EXT_STMT /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug相互運動扩展.php] [L14 0x109eef720 ECHO "n" /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug相互運動扩展.php] [L15 0x109eef740 EXT_STMT /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug相互運動扩展.php] >00015: } 00016: 00017: testFunc();
以上が php メソッドの中断の実現であり、大家学会の後で以下のサンプル操作も試行されています。