클래스 메소드를 훅 콜백으로 등록


16

이 작업을 올바르게 수행했는지 잘 모르겠습니다.

내가 이해 한대로 :

클래스 foo와 정적 메소드 막대가 있으면 배열 array("foo","bar")을 함수 이름으로 전달하여 콜백으로 등록 할 수 있습니다 .

$ foo에 클래스 인스턴스가 있고 메소드 막대를 호출하려면 배열을 전달합니다 array($foo,'bar').

클래스 자체에 작업을 등록 해야하는 경우 작동 array($this,'bar')합니까?


3
질문을하는 것보다 시험이 더 빠르지 않습니까? ;) 그렇습니다, 당신은 이것을 할 수 있습니다.
fuxia

2
테스트가 도움이 될 수 있지만 때로는 피드백도 찾습니다. 나는 실제로 질문을하는 것이 좋다고 생각하고, OPs 동기 부여를 질문하는이 규칙이있다. : :)
hakre

답변:


11

클래스 자체에 작업을 등록 해야하는 경우 작동 array($this, 'bar')합니까?

예, 작동합니다. $this문서콜백에 필요한 구체적인 인스턴스를 말합니다. 있습니다. 그것은 $foo당신이 제시 한 예 와 정확히 같습니다 . 그것은 $this조금 더 특별하지만, 기본적으로 동일하며 PHP의 콜백과 함께 완벽하게 작동합니다.

추가 :

클래스 foo와 정적 메소드 막대가 있으면 배열 array("foo","bar")을 함수 이름으로 전달하여 콜백으로 등록 할 수 있습니다 .

그렇습니다. 정적 함수의 경우 배열 대신 문자열로 작성할 수 있습니다 . 콜백 문서를foo::bar 참조하십시오 . 편리 할 수 ​​있습니다.


1

정적 메소드의 경우 다음을 수행 할 수도 있습니다.

['foo','bar'] 

다음은 Undefined 클래스에 상수 'bar'를 제공 할 때 :

foo::bar

예-$ control_callback을 지정할 때 wp_add_dashboard_widget

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.