2011-12-23 9 views
2

기능 목록이 있습니다. a(), b(), c()
나는 main() 기능을 가지고 있습니다.함수를 다른 함수에 매개 변수로 전달하려면 어떻게합니까?

경우에 따라 main()에 다른 함수를 전달해야 사용할 수 있습니다.
자바 스크립트에서는은 다음과 같습니다

var a = function(){} 
var b = function(){} 
var c = function(){} 

var func = (some logic) a, b or c; 

main(func); 

내가 php5.3에서 그렇게합니까?
나는

$func_name = "a"; 
main($func_name){ 
    $func_name(); 
} 

사용을 피하려고 아니면이 가장 좋은 방법이 될 수있다, 나는 어떤 유형의 클로저를 사용하지 말아야?

답변

2
PHP 5.3

같은 생각, 당신은 anonymous functions 만들 수 :

$sayHello = function($var) 
{ 
    echo "Hello ", $var; 
}; 

// Logic here to determine what $func is set to 
$func = $sayHello;  

function callCustom($function) 
{ 
    if(!is_callback($function)) 
    { 
     // throw exception 
    } 
    $function("World"); 
} 

callCustom($func); // Hello World 
+0

+1 기능의 꽤 괜찮은 설명을 위해 – Cyclone

+0

이 힌트를 입력하는 방법이 있습니까? 'xxx (func $ function) {}' –

+0

@ItayMoav : 힌트 콜백을 입력 할 수는 없지만 매개 변수가 콜백이 아닌지 여부를 감지하는 조건을 추가 할 수 있습니다. –

0

을이 시도 :

$a = function(){}; 
$b = function(){}; 
$c = function(){}; 

switch (rand(0, 2)) { 
    case 0: $func = $a; break; 
    case 1: $func = $b; break; 
    case 2: $func = $c; break; 
} 

var_dump($func); 

당신은 작동 여기 예를 http://codepad.viper-7.com/Ut5yGQ

참고 볼 수 있습니다 : 나는 var_dump을 사용 main 대신 main은 정의되지 않음

0

PHP에서는 "호출 가능"(is_callable­Docs)의 모든 것을 호출 (호출) 할 수 있습니다. 설명서에서는 종종 이러한 매개 변수의 이름을 Callback, a pseudo-type in PHP­Docs으로 지정합니다.

당신은 다른 콜백 중 하나를 사용하여 함수의 매개 변수로 전달할 수 있습니다

function main($callback) 
{ 
    call_user_func($callback); 
} 

그런 다음 함수가 유효한 PHP 콜백 작동합니다.

변수 함수 호출 :

function name() {}; 
    $function = 'name'; # function name as string 
    $function(); # invoke 

변수 함수 호출 등의 익명 기능 :

$function = function() {}; # define function 
    $function(); # invoke 
것과

다음에, 함수의 변수, 일부 실시 예에 호출 할 수있다

도 참조하십시오. Variable Functions­Docs.

관련 문제