Bu sınıf, dinamik olarak oluşturulmuş bir parametre listesi ileten bir işlevi çağırmak için kullanılabilir. Bir fonksiyonun ismini, isteğe bağlı bir nesneyi ve parametrelerin listesini içeren bir diziyi alabilir ve nesnenin belirtilen fonksiyonunu çağırır. Sınıf, işlev parametrelerini belirlemek için reflection API’sini kullanır ve bir dizideki argüman olarak iletilen parametre değerlerini kullanarak, cevapsız parametreleri karşılık gelen varsayılan değerlerle doldurarak işlevi çağırır.
<?php class dinamikParametreler{ function cagir($g, $ps = array()) { $fPar = $this->getPar($g); foreach($ps as $arg=>$value){$fPar[$arg]=$value;} return call_user_func_array($g, array_values($fPar)); } function getPar($g) { $refNesne = $this->getRef($g); $ps = array(); foreach ($refNesne->getParameters() as $pr) { if($pr->isOptional())$ps[$pr->name] = $pr->getDefaultValue(); else $ps[$pr->name] = null; } return $ps; } function getRef($g){ if (is_array($g)) $f = new ReflectionMethod($g[0], $g[1]); else $f = new ReflectionFunction($g); return $f; } } class haberler { function cagir ( $id, $sayfa = 0, $eleman = 10, $sira = 'date', $yontem = 'desc') { echo "id=$id&sayfa=$sayfa&eleman=$eleman&sira=$sira&yontem=$yontem"; } } $haberler = new haberler(); $dinamikParametreler = new dinamikParametreler(); $dinamikParametreler->cagir(array($haberler, 'cagir'), array('sira' => 'ad'));
Çıktısı
id=&sayfa=0&eleman=10&sira=ad&yontem=desc