$functions = array(
'function1' => function($echo) { echo $echo; }
);
이 가능합니까? 가장 좋은 대안은 무엇입니까?
$functions = array(
'function1' => function($echo) { echo $echo; }
);
이 가능합니까? 가장 좋은 대안은 무엇입니까?
몇 가지 옵션이 있습니다. create_function
사용
$functions = array(
'function1' => create_function('$echo', 'echo $echo;')
);
단순히 문자열로 함수의 이름을 저장 (이것이 효과적으로 모든 create_function
을하고있다) :
function do_echo($echo) {
echo $echo;
}
$functions = array(
'function1' => 'do_echo'
);
당신이 PHP 5.3을 사용하는 경우 anonymous functions를 사용할 수있다 :
를$functions = array(
'function1' => function($echo) {
echo $echo;
}
);
이러한 방법은 모두 설명서의 callback
pseudo-type에 나와 있습니다. 어느 것을 선택하든 함수를 호출하는 권장 방법은 call_user_func
또는 call_user_func_array
함수를 사용하는 것입니다.
$function = create_function('$echo', 'echo $echo;');
$function('hello world');
알렉스 바렛의 게시물에 후속, create_function()는 당신이 실제로 thusly 히 함수를 호출하는 데 사용할 수있는 값을 반환 "사용의 예 :
이 오래된create_function
를 사용하는 것보다 훨씬 빠르다는 것을
음 ...
//store anonymous function in an array variable e.g. $a["my_func"]
$a = array(
"my_func" => function($param = "no parameter"){
echo "In my function. Parameter: ".$param;
}
);
//check if there is some function or method
if(is_callable($a["my_func"])) $a["my_func"]();
else echo "is not callable";
// OUTPUTS: "In my function. Parameter: no parameter"
echo "\n<br>"; //new line
if(is_callable($a["my_func"])) $a["my_func"]("Hi friend!");
else echo "is not callable";
// OUTPUTS: "In my function. Parameter: Hi friend!"
echo "\n<br>"; //new line
if(is_callable($a["somethingElse"])) $a["somethingElse"]("Something else!");
else echo "is not callable";
// OUTPUTS: "is not callable",(there is no function/method stored in $a["somethingElse"])
참조 :
익명 기능 : 호출에 대한 http://cz1.php.net/manual/en/functions.anonymous.php
PHP 때문에 "5.3.0 익명 기능을 사용할 수있게 :
call_user_func($functions['function1'], 'Hello world!');
당신이 자바 스크립트에서 오는거야? –
** TL; DR - PHP 5.4 이후 : ** $ functions = [ 'function1'=> function ($ echo) {echo $ echo; }];' ...... PHP 5.3의 익명 함수는 5.4이므로'array()'대신'[]'를 쓸 수 있습니다. –