PHP ile değişken argümanlar bir kurucusunu çağırmak

2 Cevap php

Ben func_get_args() dan elde ettiği, değişkin argüman alan bir işlevi var.

Bu fonksiyon bu argümanları ile bir kurucusunu çağırmak gerekiyor. Ancak, ben bunu nasıl bilmiyorum.

call_user_func, bağımsız değişkenler bir dizi ile işlevleri çağırabilirsiniz, ama bunu nasıl bir kurucu çağırır mı? Ben sadece argüman dizisi geçemez; ben bunu "normal" aradım inanmak gerekir.

Teşekkür ederiz!

2 Cevap

Nedense kullanmak yapamıyorsanız ReflectionClass::newInstanceArgs Burada eval kullanarak başka bir çözüm () 'dir:

function make_instance($class, $args) {
   $arglist = array();
   $i = 0; 
   foreach($args => &$v) {
       $arglist[] = $n = '_arg_'.$i++;
       $$n = &$v;
   }
   $arglist = '$'.implode(',$',$arglist);
   eval("\$obj = new $class($arglist);");
   return $obj;
}
$instance = make_instance('yourClassName', $yourArrayOfConstructorArguments);

Bu fonksiyonu kullanarak ReflectionClass::newInstanceArgs ile kabul edilebilir değil yapıcı, referansla argüman geçmemize olanak sağlar unutmayın.