是否可以在执行PHP脚本的每一行后运行PHP函数?

时间:2011-06-02 13:14:25

标签: php apache

我的问题与此类似:Is it possible to run code after each line in Ruby? 但是我想用PHP来做。

是否可能,如果可能,怎么样?

3 个答案:

答案 0 :(得分:8)

您可以register一个tick handler

  

<强>蜱

     

tick是由声明块内的解析器执行的每N个低级别可选语句发生的事件。在声明块的指令部分中使用ticks = N指定N的值。

     

并非所有陈述都是可勾选的。通常,条件表达式和参数表达式不可勾选。

正如您所看到的,它不完全是“每行代码”,除非您每行只写一个可选择的语句。但它是你能得到的最接近的。

实施例

declare(ticks=1);
register_tick_function(function() {
    echo "tick_handler() called\n";
});

echo 'Line 1', PHP_EOL;
echo 'Line 2', PHP_EOL;
echo strtoupper('Line 3'), PHP_EOL;

将输出(demo):

tick_handler() called
Line 1
tick_handler() called
Line 2
tick_handler() called
LINE 3
tick_handler() called

答案 1 :(得分:1)

我认为它不在PHP中。但是,您可以编写一个PHP脚本,该脚本使用原始脚本并在原始的每一行之后插入一个额外的行。

答案 2 :(得分:0)

您可以尝试在原始PHP周围放置一个包装器,如下所示:

<?PHP
$lines = file('original.php');

foreach ($lines as $line) {
    eval($line);
    your_function();
}
?>