ör .:Bir PHP dizisinde bir işlev kaydedebilir misiniz?
$functions = array(
'function1' => function($echo) { echo $echo; }
);
bu mümkün mü? En iyi alternatif nedir?
ör .:Bir PHP dizisinde bir işlev kaydedebilir misiniz?
$functions = array(
'function1' => function($echo) { echo $echo; }
);
bu mümkün mü? En iyi alternatif nedir?
birkaç seçenek vardır. create_function
kullanın:
$functions = array(
'function1' => create_function('$echo', 'echo $echo;')
);
Basitçe bir dize olarak işlevin adını saklamak (bu etkili tüm create_function
yapıyor):
function do_echo($echo) {
echo $echo;
}
$functions = array(
'function1' => 'do_echo'
);
PHP 5.3 kullanıyorsanız, anonymous functions yararlanabilirler:
$functions = array(
'function1' => function($echo) {
echo $echo;
}
);
Tüm bu yöntemler, callback
pseudo-type altındaki belgelerde listelenmiştir. Hangisini seçerseniz seçin, işlevinizi çağırmanın önerilen yolu, call_user_func
veya call_user_func_array
işleviyle olur.
$function = create_function('$echo', 'echo $echo;');
$function('hello world');
Alex Barrett yayında takip etmek, create_function() aslında thusly işlevini çağırmak için kullanabileceğiniz bir değer döndürür " kullanım örneği:
bu eskicreate_function
kullanarak çok daha hızlı olduğunu
not ...
//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"])
REFERANSLAR:
Anonim fonksiyonu: çağrılabilir için http://cz1.php.net/manual/en/functions.anonymous.php
PHP yana "5.3.0 Anonim işlevler de kullanılabilir hale geldi
call_user_func($functions['function1'], 'Hello world!');
Eğer Javascript geliyor musun? –
** TL; DR - PHP 5.4'ten beri: ** '$ functions = ['function1' => function ($ echo) {echo $ echo; }]; ' ...... PHP 5.3 beri anonim fonksiyonlar mevcuttur 5.4 beri' [] 'yerine dizisi()' 'arasında –