2011-08-26 14 views
7

Ho iniziato a cercare lingue diverse per iniziare. Ho trovato method_missing in Ruby molto interessante ma non sono riuscito a trovare lo stesso in Java e PHP. C'è qualcosa come method_missing in Java o PHP?Metodo mancante in Java o PHP

+0

Dopo aver usato il rubino per molto tempo e tornare a Java, ho voglia di tornare al 20 ° secolo. – texasbruce

risposta

8

PHP ha __call($name, array $args). È un catchall che gestisce le situazioni in cui si chiama un metodo che non è definito per l'istanza.

In PHP> = 5.3 è presente anche __callStatic($name, array $args) che funziona in gran parte allo stesso modo solo a livello di classe (duh).

class MyClass 
{ 
    public function __call($name, array $args) 
    { 
     echo "You tried to call $name(".implode(',',$args)."). Silly user."; 
    } 
} 

$k = new MyClass(); 
$k->doSomething(1,2,3); // You tried to call doSomething(1,2,3). Silly user. 

L'equivalente in Java è un po 'più ingombrante e coinvolge qualcosa chiamato la classe Proxy. Un tutorial può essere trovato here - gli esempi sono un po 'troppo da riassumere qui.

1

In Java potresti riuscire a fare qualcosa con un'interfaccia, un Proxy e una riflessione.

+0

Il metodo mancante non ha significato verificare se esiste un metodo. – xdazz

+0

c'è un respond_to? (: Method_name) per verificare se esiste un metodo per un oggetto in Ruby. –

1

In PHP, è possibile utilizzare il metodo magico __call().

Problemi correlati