簡體   English   中英

傳遞 function 變量時如何避免 php function 調用?

[英]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));

call_user_func_array()

正如 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM