function getTemplate($tpl if ($vars) echo ", $vars";)...function
Is this possible somehow? The above wont work.
Teşekkürler
Eğer işlev tanımında bir varsayılan değer tanımlayarak yapabileceğiniz isteğe bağlı bir argüman, istediğiniz gibi görünüyor:
function getTemplate($tpl, $vars=null)
{
}
Sen GetTemplate ($ foo) veya GetTemplate ($ foo, $ bar) gibi bu fonksiyonu çağırabilirsiniz. PHP manual page on function arguments daha fazla bilgi için bkz.
Bu bağımsız değişken bir dizi çekmek fonksiyonları yazmak da mümkündür, ama onlara ulaşmak için func_num_args, func_get_arg ve func_get_args işlevleri kullanmak gerekir. İşte kılavuzundan bir örnek
<?php
function foo()
{
$numargs = func_num_args();
echo "Number of arguments: $numargs<br />\n";
if ($numargs >= 2) {
echo "Second argument is: " . func_get_arg(1) . "<br />\n";
}
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
}
}
foo(1, 2, 3);
?>
Daha bu cevabı off turu için 1 dizisini oluşturmak herhalde .. n değerleri ve () işlevi, yukarıda tanımlanan foo onu geçmek istedi? Sen kullanmak istiyorum call_user_func_array
$values=(1,2,3,4);
call_user_func_array('foo', $values);
Bu çağrı eşdeğerdir
foo(1,2,3,4);
Veya:
getTemplate($tpl, ($vars)?$vars:null); // not sure
getTemplate($tpl, (!empty($vars))?$vars:null);
Ayrıca, echo benzer bir tekniği isterseniz:
$code = "getTemplate($pl";
if ( $vars ) { $code = $code . ", $vars);"; }
else { $code = $code . ");"; }
$ret = eval($code);
Although this is usually considered bad practice (never say never). Please note that all code sent to eval will be executed directly. So don't put user input in an eval() call.