我有下面這段代碼字符串變量的使用內容調用函數
copy($source, $target);
我也用
move_uploaded_file($source, $target);
爲了防止代碼的重用,我想通過複製和通過move_uploaded_file在變量。
如果我的變量是$var = "copy";
,簡單地把$var($source, $target);
,似乎沒有工作。
是否必須圍繞$var
任何特殊字符?
謝謝。
我有下面這段代碼字符串變量的使用內容調用函數
copy($source, $target);
我也用
move_uploaded_file($source, $target);
爲了防止代碼的重用,我想通過複製和通過move_uploaded_file在變量。
如果我的變量是$var = "copy";
,簡單地把$var($source, $target);
,似乎沒有工作。
是否必須圍繞$var
任何特殊字符?
謝謝。
正確的語法是$var
(variable functions),因此您的代碼應工作。
但請不要做,只是寫在一個簡單的和可讀的方式代碼。有是這種技術的合法用例,但這不是其中之一。
您可以使用PHP函數call_user_func()。
您可以使用call_user_func
做到這一點。
$result = call_user_func($functionToCall, $source, $target)
你想看看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
它將調用基於字符串的名稱,並提供參數的功能。
據我知道你的代碼應工作
這裏是鏈接爲your refrence
如果它不能正常工作,那麼它有什麼作用?錯誤?警告?沒有? – 2013-05-03 13:39:59
「爲了防止代碼重用」 - 你確定這就是你的意思?;) – nickb 2013-05-03 13:42:05
@nickb - 我對圖片上傳使用2/3次相同的函數,但最終調用函數必須移動圖片而不是複製它。 – sark9012 2013-05-03 13:53:23