0

オブジェクトの 1 つから静的メソッドを呼び出したいです。オブジェクトの名前がわかっている場合は問題ありませんが、この場合はわかりません。
複数のオブジェクト名を持つ配列があり、この配列要素の 1 つからメソッドを呼び出したいと考えています。したがって、次のようになります。

function call_method($key)  {
    $tmp = array('key1' => 'objectname1','key2' => 'objectname2','key3' => 'objectname3');
    if(array_key_exists($key, $tmp))    {
        $tmp::static_method();
    }
}

しかし、この解決策は機能していません。誰かがこれを機能させる方法を知っていますか?

4

2 に答える 2

3

$tmpは配列であるため、静的メソッドは関連付けられていません。値を調べて、それを使用する必要があります。

// this will work for newer versions of PHP
$klass = $tmp[$key];
$klass::static_method();

// in some older versions, you may need to use call_user_func:
call_user_func(array($klass, 'static_method') /*, your args here */);
于 2012-10-09T14:57:07.637 に答える
2

現在、その配列で静的関数を呼び出そうとしています。やったほうがいい :

 if(array_key_exists($key, $tmp))    {
    $tmp[$key]::static_method();
}

配列に「オブジェクト」という名前を指定したと思いますが、それらはクラス名であると想定しています。インスタンスで静的関数を呼び出すことはできません。

于 2012-10-09T14:57:46.797 に答える