fonksiyonu functionName (burada fıkra ise) mümkün mü?

4 Cevap php
function getTemplate($tpl if ($vars) echo ", $vars";)...function

Is this possible somehow? The above wont work.

Teşekkürler

4 Cevap

Optional arguments with default values

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.

Variable numbers of arguments

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);
?>

Calling a function with a variable number of parameters

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);

Bu kadar kötü ne

function getTemplate($tpl, $vars=null)   {}

?

if ($vars) { getTemplate($tpl, $vars); }
else {{ getTemplate($tpl, null); }

(Yarı-sahte kod)

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.