2017-10-23 15 views
1

메서드 콜백을 매개 변수로 다른 메서드에 전달하는 방법은 무엇입니까? 내가 본 모든 예제는 함수를 사용하지만 메소드는 사용하지 않습니다. 내가 시도한 것은 :PHP 메서드 콜백

call_user_func($this, 'method_name', [$param1, $param2,...]); 

또 다른, 더 우아한 방법은 매개 변수로 $this->method_name 전달과 같은 존재?

이 나는대로 콜백을 추가 할 수 있습니다 알고

function() use ($param1, $param2,...) { 
    return $this->method_name($param1, $param2); 
} 

하지만 폐쇄 부분을 생략하고 싶습니다.

답변

1

[$obj, 'method']을 콜백으로 사용하여 개체에 바인딩 할 수도 있습니다.

class A { 

    public $b = 'test'; 

    public function callback() { 
     echo $this->b; 
    } 
} 

$a = new A(); 
$f = [$a, 'callback']; 
$f(); 
+0

개인 생성자에 인수가 있으므로 기본 생성자를 호출하여 인스턴스를 만들 수 없습니다. 또한이 콜백을 동일한 클래스 내부에서 호출하므로 인스턴스 초기화를 $ this 또는 something로 바꿀 수 있습니까? – user2340939

+0

테스트 : 예, $ this를 사용할 수 있습니다. – user2340939