使用string变量的内容来调用函数

时间:2013-05-03 13:38:27

标签: php

我有以下代码

copy($source, $target);

我也用

move_uploaded_file($source, $target);

为了防止代码重用,我想通过变量传递copy和move_uploaded_file。

如果我的变量为$var = "copy";,只需添加$var($source, $target);,似乎无效。

是否有任何特殊字符必须围绕$var

感谢。

5 个答案:

答案 0 :(得分:9)

正确的语法是$varvariable functions),因此您的代码应该有效。

但请不要这样做,只需以简单易懂的方式编写代码即可。 此技术的合法用例,但这不是其中之一。

答案 1 :(得分:1)

你想看Variable Functions继续解释如何做到这一点。

function foo() {
    echo "In foo()<br />\n";
}
$bar = 'foo';
$bar(); //this calls foo()

这也可以在对象方法和静态方法上完成。

对象方法

class Foo
{
    function MyFunction()
    {
        //code here
    }
}

$foo = new Foo();
$funcName = "MyFunction";
$foo->$funcName();

静态方法

class Bar
{
    static function MyStaticFunction()
    {
        //code here
    }
}

$funcName = "MyStaticFunction";
Bar::$funcName();

虽然在您的情况下可能不是这种情况,但在动态处理函数时,务必检查function actually exists和/或is callable

除了使用变量函数之外,您还可以使用call_user_func,它将根据字符串名称和提供的参数调用函数。

答案 2 :(得分:0)

您可以使用PHP函数call_user_func()。

More info here.

答案 3 :(得分:0)

您可以使用call_user_func执行此操作。

 $result = call_user_func($functionToCall, $source, $target)

文档:PHP: call_user_func

答案 4 :(得分:0)

据我所知,你的代码应该可行

这是your refrence

的链接