2011-08-26 14 views
7

私は始めにさまざまな言語を見てきました。私はRubyでmethod_missingが非常に面白いが、JavaとPHPで同じものを見つけることができませんでした。 JavaやPHPにmethod_missingのようなものがありますか?JavaまたはPHPでメソッドが見つからない

+0

長い間ルビーを使ってJavaに戻った後は、20世紀に戻る気がします。 – texasbruce

答えて

8

PHPは__call($name, array $args)です。これは、インスタンスに対して定義されていないメソッドを呼び出す状況を処理するキャッチオールです。

PHP> = 5.3の場合、クラスレベル(duh)でのみほとんど同じように機能する__callStatic($name, array $args)があります。 Javaで

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. 

同等のは少し面倒ですし、それがProxyクラスと呼ばれるものを含んでいます。チュートリアルはhereで見つけることができます - 例はここで要約するだけです。

1

Javaでは、インターフェイス、Proxy、およびリフレクションで何かできることがあります。

+0

メソッドがないかどうかは、メソッドが存在するかどうかをチェックすることではありません。 – xdazz

+0

Rubyでオブジェクトのメソッドが存在するかどうかを確認するrespond_to?(:method_name)があります。 –

1

PHPでは、マジックメソッド__call()を使用できます。

関連する問題