0

この種のクラスがある場合:

class MyClass {
    protected function method1() {
      // Method body
    }
}

このメソッドの本体を変数に保存して、アプリケーションに渡すことはできますか?

たとえば、次のようにします。

class MyClass {
    function __construct() {
        $var = // body of method1
        $something = new AnotherClass($var);
    }

    protected function method1($arg1, $arg2) {
      // Method body
    }
}


class AnotherClass {
    function __construct($var) {
        $var($this->arg1, $this->arg2);
    }
}

私はこのようなことは可能ですか?

4

2 に答える 2

0

無名関数の使用を試すことができます:

$self = $this;
$var = function($arg1, $arg2) use (&$self) {
    $self->method1($arg1, $arg2);
};

完全な例:

class MyClass {
    function __construct() {
        $self = $this;
        $var = function($arg1, $arg2) use (&$self) {
            $self->method1($arg1, $arg2);
        };        
        $something = new AnotherClass($var);
    }

    protected function method1($arg1, $arg2) {
      // Method body
    }
}
于 2013-08-14T13:43:32.120 に答える