2011-08-26 10 views
7

Od początku szukam różnych języków. Zauważyłem, że metoda_missing w Ruby jest bardzo interesująca, ale nie była w stanie znaleźć tego samego w Javie i PHP. Czy jest coś takiego jak method_missing w Javie lub PHP?Brakująca metoda w języku Java lub PHP

+0

Po długim korzystaniu z rubinu i powracaniu do Jawy, mam ochotę wrócić do XX wieku. – texasbruce

Odpowiedz

8

PHP ma . Jest to catchall, który obsługuje sytuacje, w których wywołujesz metodę, która nie jest zdefiniowana dla instancji.

W PHP> = 5.3 jest również __callStatic($name, array $args), który działa w dużej mierze w ten sam sposób tylko na poziomie klasy (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. 

Równowartość w Javie jest nieco bardziej kłopotliwe i wiąże się coś, co nazywa klasa Proxy. Samouczek można znaleźć pod numerem here - przykłady można tutaj nieco streścić.

1

W Javie może być możliwe zrobienie czegoś z interfejsem, Proxy i odbiciem.

+0

Brakująca metoda nie jest znacząca. Sprawdź, czy istnieje metoda. – xdazz

+0

istnieje response_to? (: Nazwa_metody) do sprawdzania, czy istnieje metoda dla obiektu w Ruby. –

1

W PHP można używać magicznej metody __call().

Powiązane problemy