2009-04-21 20 views
5

Ruby bir partiye davet edildiyse veGönderme ve getattr PHP eşdeğer?

foobarobject.send('foomethod') 

.. ve Python aynı partiye davet edildiyse ve getiriyorsa:

getattr(foobarobject, 'foomethod')() 

.. PHP'nin partiye ne getirmesi gerekiyor?

Bonus soru: Eğer Ruby ve Python PHP'nin parti iyilikleri için kıskanıyorlarsa, PHP'nin arkasındaki konuşabilmek için PHP'nin belgelerinde ne tür İngilizce terimleri ararlardı?

+0

İkisi farklıdır: Ruby sürümü yöntemi çağırır; Python sürümü bir bağlı yöntem döndürür. – Miles

+5

+1, yaratıcı bir şekilde soruyu ifade etmenin yolu için :) –

+0

@Miles: Python sürümüne paren ekleyerek soru şimdi değiştirildi. – dreftymac

cevap

10

PHP bu getiriyor.

DÜZENLEME: Yukarıdaki için kullanılan bir terimdir rağmen

variable variables özellikle kılavuzda bir nesneye yapıyor bahsediyor hiçbir şey yoktur. Ancak, call_user_func ile aynı şeyi elde edebilirsiniz:

call_user_func(array($foobarobject, "foomethod")); 
+4

PHP gaddardır .... –

3

yöntem adı tutmak için değişken kullanma. Paolo'nun ilk örneğiyle hemen hemen aynı, ama bunu bilmedikçe belki de çok açık değil.

Ayrıca Reflection classes da var.

$method = new ReflectionMethod('Foobar', 'foomethod'); 
$method->invoke(null);