2011-08-26 12 views
7

He estado buscando en diferentes idiomas para comenzar. Encontré method_missing en Ruby muy interesante pero no pude encontrar lo mismo en Java y PHP. ¿Hay algo así como method_missing en Java o PHP?Método que falta en Java o PHP

+0

Después de usar ruby ​​durante mucho tiempo y volver a Java, tengo ganas de volver al siglo XX. – texasbruce

Respuesta

8

PHP tiene __call($name, array $args). Es un catchall que maneja situaciones en las que llama a un método que no está definido para la instancia.

En PHP> = 5.3 también hay __callStatic($name, array $args) que funciona básicamente de la misma manera solo en el nivel de clase (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. 

El equivalente en Java es un poco más engorroso e implica algo que se llama la clase Proxy. Se puede encontrar un tutorial en here - los ejemplos son un poco más que resumir aquí.

1

En Java es posible que pueda hacer algo con una interfaz, un Proxy y una reflexión.

+0

El método que falta no significa que se verifique si existe un método. – xdazz

+0

hay un respon_to? (: Method_name) para comprobar si existe un método para un objeto en Ruby. –

1

En PHP, puede usar el método mágico __call().

Cuestiones relacionadas