Метод отсутствует в Java или PHP - PullRequest
7 голосов
/ 26 августа 2011

Я искал разные языки, чтобы начать. Я нашел method_missing в Ruby очень интересным, но не смог найти то же самое в Java и PHP. Есть ли что-то вроде method_missing в Java или PHP?

Ответы [ 3 ]

8 голосов
/ 26 августа 2011

PHP имеет __call($name, array $args).Это ловушка, которая обрабатывает ситуации, когда вы вызываете метод, который не определен для экземпляра.

В PHP> = 5.3 также есть __callStatic($name, array $args), который функционирует в основном одинаково только на уровне класса (дух).

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.

Эквивалент в Java немного более громоздкийи он включает в себя нечто, называемое классом Proxy .Учебное пособие можно найти здесь - здесь приведено несколько примеров для подведения итогов.

1 голос
/ 26 августа 2011

В PHP вы можете использовать магический метод __call().

1 голос
/ 26 августа 2011

В Java вы можете сделать что-то с интерфейсом, Proxy и отражением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...