örneğin:
$functions = array(
'function1' => function($echo) { echo $echo; }
);
Bu mümkün mü? En iyi alternatif nedir?
Bir kaç seçenek vardır. Kullan create_function
a>:
$functions = array(
'function1' => create_function('$echo', 'echo $echo;')
);
Sadece bir dizge 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 size faydalanmak anonymous functions yapabilirsiniz:
$functions = array(
'function1' => function($echo) {
echo $echo;
}
);
Bütün bu yöntemler callback
psuedo tipi . Whichever you choose, the recommended way of calling your function would be with either the call_user_func
or call_user_func_array
a> fonksiyonu altında belgelerinde listelenmiştir.
call_user_func($functions['function1'], 'Hello world!');
Daha iyi bir cevap diziler işlevleri koyarak neden olarak bir soru olabilir. Eğer başarmak için çalışıyoruz ne bağlı olarak, bu kod iyi kullanmak olmayabilir.
edit:
php fonksiyonları bildirmek ve kullanmak için iyi bir yoldur:
(Sayfanın üstündeki)
function name(){
}
(Kodunuzda)
name();
:)
Güzel ve temiz. Bunu daha iyi yapılandırılmış bir şey gerekiyorsa, gerçekten nesnelerin içine bakmak gerekir.
$object->function();
PHP beri, kullanım örneği "5.3.0 Anonim işlevler kullanılabilir hale":
//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"])
REFERENCES:
Anonymous function: http://cz1.php.net/manual/en/functions.anonymous.php
Testi çağrılabilir için: http://cz2.php.net/is_callable