[英]How to avoid the php function call when passing a function variable?
我有一個像這樣的 function 變量......
$aName = "My Name";
function 需要這樣傳入:
$sayHelloFunction = function sayHello($aName){
echo($aName);
}
比,我有一個負責執行sayHelloFunction的方法:
runningFunction($sayHelloFunction($aName));
在runningFunction中,它會有一些條件來執行function,但是當我將“$sayHelloFunction($aName)”傳遞給runningFunction時,它會自動執行,但我也想傳遞變量$aName,我該怎么做實現這一目標? 謝謝你。
runningFunction($sayHelloFunction, $aName);
簡單的。
您必須單獨通過 arguments。 但是,您可以將它們包裝在一個數組中,以便您可以將它們作為單個參數傳遞給runningFunction
,如下所示:
$printFunction = function($args) {
print $args['lastname'].', '.$args['firstname'];
};
function runningFunction($f, $a) {
$f($a);
}
$firstname = 'Bob';
$lastname = 'Smith';
$functionArguments = array(
'firstname' => $firstname,
'lastname' => $lastname
);
runningFunction($printFunction, $functionArguments);
如果您希望您的動態函數獲得“正確的”arguments,那么我認為沒有辦法解決這樣的問題:
function runningFunction($f, $a) { switch(count($a)) { 0: $f(); break; 1: $f($a[0]); break; 2: $f($a[0], $a[1]); break; 3: $f($a[0], $a[1], $a[2]); break; // and so on } }
將參數作為數組傳遞,然后使用call_user_func_array()
調用您的 function。
這樣,您的runningFunction()
將是絕對抽象的(根據您的要求),它可以調用任何類型的 function,您有責任傳遞正確數量的參數。
function runningFunction ($callback, $parameters=array()) {
call_user_func_array($callback, $parameters);
}
runningFunction($sayHelloFunction, array($aName));
正如 xconspirisist 建議的那樣,將$aName
作為單獨的參數傳遞給 function。
有關變量函數的詳細信息,請訪問 PHP 站點。
調用 runningFunction 時使用匿名runningFunction
function runningFunction($func) {
$func();
}
runningFunction(function() {
$sayHelloFunction($aName));
// You can do more function calls here...
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.