我有以下一段代码
copy($source, $target);
我也用
move_uploaded_file($source, $target);
为了防止代码重用,我想通过变量传递 copy 和 move_uploaded_file 。
如果我的变量是$var = "copy";
, 简单地说$var($source, $target);
, 似乎不起作用。
是否有任何特殊字符必须围绕$var
?
谢谢。
我有以下一段代码
copy($source, $target);
我也用
move_uploaded_file($source, $target);
为了防止代码重用,我想通过变量传递 copy 和 move_uploaded_file 。
如果我的变量是$var = "copy";
, 简单地说$var($source, $target);
, 似乎不起作用。
是否有任何特殊字符必须围绕$var
?
谢谢。
正确的语法是$var
(变量函数),所以你的代码应该可以工作。
但请不要那样做,只需以简单易读的方式编写代码即可。这种技术有合法的用例,但这不是其中之一。
你想看看变量函数,它继续解释如何做到这一点。
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_func
which 将根据字符串名称和提供的参数调用函数。
您可以使用 PHP 函数 call_user_func()。
您可以使用它call_user_func
来执行此操作。
$result = call_user_func($functionToCall, $source, $target)
据我所知,您的代码应该可以工作
这是您参考的链接