0

そのようなことをするのは不可能に見えます:

class Service
{
    public function get($argument1, $argument2)
    {
        echo "Arguments: $argument1, $argument2.";
    }
}

class Main
{
    public function __callStatic($method, $arguments)
    {
        $method = "get".ucfirst($method);
        $arguments = implode(", ", $arguments);

        $object = self::$method;

        return $object->get($arguments);
    }

    public static function getService()
    {
        return new Service;
    }
}

$main = new Main;
$main::Service("1", "2"); // Should output 'Arguments: 1, 2.'

問題は自己混乱のすべてであり、これで可能になります。

self::$variable を使用します。self は Main コンテキストに変数を持っています。

$object = self も機能しません。

$object = clone self も機能しません。

define("メソッド", $メソッド); self::method は機能しません。これは、self がクラス定数プロパティであると考えるためです。

これは使えません。

これを実行する方法はありますか?

4

1 に答える 1

2

$argumentsオリジナルを直接渡すだけcall_user_func_arrayです:

return call_user_func_array(array($object, "get"), $arguments);

次に、次の静的呼び出しを行いますMain

Main::service("1", "2");

ここで実際に見てください:http://codepad.viper-7.com/phhqy6

于 2013-09-16T02:21:40.877 に答える