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

发布于 2024-11-11 17:32:12 字数 188 浏览 0 评论 0原文

我的问题与此类似: 是否可能在 Ruby 中的每一行之后运行代码? 不过我想用 PHP 来做。

可能吗?如果可能的话,如何实现?

My question is similar to this: Is it possible to run code after each line in Ruby?
However I want to do it in PHP.

Is it possible and if so, how?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寒尘 2024-11-18 17:32:12

您可以注册一个刻度处理程序

刻度线

tick 是解析器在声明块中每执行 N 个低级可标记语句就会发生一次的事件。 N 的值是使用声明块的指令部分中的ticks=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

You can register a tick handler:

Ticks

A tick is an event that occurs for every N low-level tickable statements executed by the parser within the declare block. The value for N is specified using ticks=N within the declare blocks's directive section.

Not all statements are tickable. Typically, condition expressions and argument expressions are not tickable.

As you can see, it's not exactly as "each line of code" unless you only write one tickable statement each line. But it's the closest you can get.

Example:

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;

will output (demo):

tick_handler() called
Line 1
tick_handler() called
Line 2
tick_handler() called
LINE 3
tick_handler() called
倒带 2024-11-18 17:32:12

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

I don't think it is within PHP. You could, however, write a PHP script that took your original script and inserted an extra line after each line of the original.

梅窗月明清似水 2024-11-18 17:32:12

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

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

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

You could try putting a wrapper around your original PHP, like so:

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

foreach ($lines as $line) {
    eval($line);
    your_function();
}
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文