Bir diziye null değerleri ekleme

0 Cevap php

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.

0 Cevap