Nasıl dinamik olarak PHP bir anonim işlev beklenen argümanların sayısını kontrol edebilirsiniz?

1 Cevap php

PHP bir anonim işlev beklenen argümanların sayısını almak mümkün mü? Ben ReflectionMethod farkındayım, ama bu yöntemin bir sınıf tanımlanmış ise, sadece iş gibi görünüyor. Benim durumumda, anonim işlev ya 1 ya da iki argüman sahip oluyor. Ben doğru kontrol yerine, bir try / catch ilk çağrıyı sarma ve ilk başarısız olursa 2 parametreleri ile tekrar çalışıyor yapmayı tercih ediyorum.

1 Cevap

Bu deneyin:

// returns the arity of the given closure
function arity($lambda) {
    $r = new ReflectionObject($lambda);
    $m = $r->getMethod('__invoke');
    return $m->getNumberOfParameters();
}

Bir kaç ay önce ben biraz daha ayrıntılı olarak bu kadar yazdı burada: http://onehackoranother.com/logfile/2009/05/finding-the-arity-of-a-closure-in-php-53