我有以下代码
copy($source, $target);
我也用
move_uploaded_file($source, $target);
为了防止代码重用,我想通过变量传递copy和move_uploaded_file。
如果我的变量为$var = "copy";
,只需添加$var($source, $target);
,似乎无效。
是否有任何特殊字符必须围绕$var
?
感谢。
答案 0 :(得分:9)
正确的语法是$var
(variable 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()。
答案 3 :(得分:0)
您可以使用call_user_func
执行此操作。
$result = call_user_func($functionToCall, $source, $target)
答案 4 :(得分:0)
据我所知,你的代码应该可行
的链接