Ben gerçi o benim sorunun alakalı eğer emin değilim ve çok eski, bu konuda bir hata raporu (http://bugs.php.net/bug.php?id=24286) bulduk. Bu benim kodudur:
class RegExp {
function name($e){ .... }
function email($e){ .... }
function phone($e){ .... }
}
$regexp = new RegExp();
$final_keys= array("name", "email", "phone");
for($index=0; $index < count($final_keys); $index ++){
if(!$regexp->$final_keys[$index]($_POST[$final_keys[$index]])){
$invalid_uri_vars .= $final_keys[$index].",";
}
else{
$uri_vars = "&".$final_keys[$index]."=".$_POST[$final_keys[$index]];
}
}
Ne yapar bu çağrılacak yöntemin adı olarak bir diziden bir değer kullanır. Diğer bir deyişle, ben onun adıyla bir değişken $final_keys[$index]
kullanarak bir işlev çağrısı uygulamak çalışıyorum.
* UPDATE: aşağıda önerileri uygulama çalıştı, hiçbir şey iş gibi görünüyor. Önerilen İşte benim değişiklikler biri:
for($key=0; $key < count($final_keys); $key ++){
if(!$regexp->{$final_keys[$key]}($_POST[$final_keys[$key]])){
$invalid_uri_vars .= $final_keys[$key].",";
}
else{
$uri_vars = "&".$final_keys[$key]."=".$_POST[$final_keys[$key]];
}
}
Benim özgün kodu olarak aynı hatayı alıyorum. Başka bir yöntem call_user_func kullanarak ama ben doğru yaptım emin değilim:
for($key=0; $key < count($final_keys); $key++){
if(!call_user_func(array($regexp, $final_keys[$key]), $_POST[$final_keys[$key]])){
$invalid_uri_vars .= $final_keys[$key].",";
}
else{
$uri_vars = "&".$final_keys[$key]."=".$_POST[$final_keys[$key]];
}
}
Ve ben bu hatayı alıyorum: Warning: call_user_func(Array) [function.call-user-func]: First argument is expected to be a valid callback in /.........testreqmeta.php on line 91