Ben, bu yöntemi vardır:
public function search($searchKey=null, $summary=null, $title=null, $authors=null, $paginationPage=0) {
...
}
Ve ben bu tüm parametreleri almak için çalışıyorum:
$Class = new Search();
// Get parameters
$ReflectionMethod = new \ReflectionMethod($Class, "search");
try {
foreach($ReflectionMethod->getParameters() AS $Parameter) {
if(array_key_exists($Parameter->name, $this->params)) {
$parameters[$Parameter->name] = $this->params[$Parameter->name];
} elseif($Parameter->isDefaultValueAvailable()) {
$paramaters[$Parameter->name] = $Parameter->getDefaultValue();
} else {
...
}
} catch(\Exception $e) {
...
}
// Call function
return call_user_func_array(array($Class, "search"), $parameters);
Benim $this->params
Bu içeriğe sahiptir:
array
'paginationPage' => int 2
'id' => int 30
'searchKey' => string 'test' (length=4)
$ Özet, $ title $ ve yazarlar mevcut olmadığından, bunlar onların varsayılan değerini alacak null
. Bir argüman null değer atarken, bu gibi görünüyor $ parametre dizisindeki hangi sonuçları atlanır:
array
'searchKey' => string 'test' (length=4)
'paginationPage' => int 2
Gibi bir yöntem çağrısı sonucu hangisi:
public function search('test', 2, null, null, 0) {
...
}
Olması gerekirken:
public function search('test', null, null, null, 2) {
...
}
Umarım sorun bakın. Nasıl ben bu boş değerleri de benim $parameters
diziye koymak emin olabilirsiniz. Geçersiz bir değer ekleyerek kullanıcı girişi olduğundan, mümkün değildir, böylece temelde her şey olabilir.
Edit
Yöntemin Yukarıdaki örnekte search
kodlanmış olan. Ancak basitleştirilmiş şeylerden biri search
aslında bir değişkendir ve bu nedenle search
şey olabilir olmasıdır. Bu benim yöntemi parametreleri nelerdir bilmiyorum ve ben foreach döngüsü önce bunları önceden tanımlayabilirsiniz anlamına gelir. Parametreleri predefining çözümü bu kodu yapıyor olması gerektiğini tam olarak ne aslında.