PHP:如何将变量添加到函数名称?

标签 php function variables

我有一个带有回调的类。我将一个字符串传递给类,然后使用该字符串作为回调函数调用回调。它的工作原理有点像这样:

$obj->runafter( 'do_this' );

function do_this( $args ) {
    echo 'done';
}

我想要做的是在循环内运行它,这样函数就不会被多次写入我想向函数名称添加一个变量。我想做的是这样的:

for( $i=0;$i<=3;$i++ ) :
    $obj->runafter( 'do_this_' . $i );

    function do_this_{$i}( $args ) {
        echo 'done';
    }
endfor;

关于如何在 PHP 中完成此操作的任何想法?

最佳答案

我会将函数作为闭包直接传入:

for($i=0; $i<=3; $i++) {
    $obj->runafter(function($args) use($i) {
        echo "$i is done";
    });
}

请注意如何使用($i) 使此局部变量在您的回调中可用(如果需要)。

这是一个工作示例:https://3v4l.org/QV66p

关于可调用对象和闭包的更多信息:

http://php.net/manual/en/language.types.callable.php

关于PHP:如何将变量添加到函数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36015710/

相关文章:

JavaScript - 替换和创建变量

php - 如何使用 PHP 获取 UTM?

function - Grails域功能不起作用

php - Laravel 与 DB2 数据库

C# 像在 AS3 中一样用回调函数替换

matlab - 在输出向量的匿名函数中创建可变数量的项

variables - 在变量类型 VHDL 中添加 2 个 std_logic_vector

mysql - 在mysql中创建持久变量(5.7)

javascript - 无法通过 javascript 向 php 提交表单

php - MySQL所有变量不传递数据