0

我有以下一段代码

copy($source, $target);

我也用

move_uploaded_file($source, $target);

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

如果我的变量是$var = "copy";, 简单地说$var($source, $target);, 似乎不起作用。

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

谢谢。

4

5 回答 5

9

正确的语法是$var变量函数),所以你的代码应该可以工作。

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

于 2013-05-03T13:39:25.417 回答
1

你想看看变量函数,它继续解释如何做到这一点。

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();

虽然在您的情况下可能不是这种情况,但在像这样动态处理函数时,检查函数是否实际存在和/或是否可调用很重要。

作为使用变量函数的替代方法,您可以使用call_user_funcwhich 将根据字符串名称和提供的参数调用函数。

于 2013-05-03T13:41:34.830 回答
0

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

更多信息在这里。

于 2013-05-03T13:40:57.233 回答
0

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

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

文档:PHP:call_user_func

于 2013-05-03T13:41:34.260 回答
0

据我所知,您的代码应该可以工作

这是您参考的链接

于 2013-05-03T13:47:00.060 回答