Registrando métodos de classe como retornos de chamada de gancho

16

Não tenho certeza se fiz isso corretamente.

Como eu entendo:

se eu tiver uma classe foo e uma barra de método estático, posso registrar isso como retorno de chamada, passando a matriz array("foo","bar")como o nome da função.

Se eu tiver uma instância de uma classe em $ foo e quiser chamar a barra de métodos, passo a matriz array($foo,'bar').

Se eu precisar registrar uma ação dentro da própria classe, ela funcionaria array($this,'bar')?

Daniel Chatfield
fonte
3
Um teste não seria mais rápido do que fazer a pergunta? ;) Sim, você pode fazer isso.
fuxia
2
Um teste pode ajudar, mas às vezes você também procura feedback. Eu acho que é bom para realmente fazer a pergunta, e há esta regra, questionando a motivação PO ... :)
hakre

Respostas:

11

Se eu precisar registrar uma ação dentro da própria classe, ela funcionaria array($this, 'bar')?

Sim, funciona. $thisDocs está se referindo à instância concreta necessária para o retorno de chamada . É exatamente como o $fooexemplo que você dá. É um $thispouco mais especial, mas representa basicamente o mesmo e funciona perfeitamente com retornos de chamada em PHP.

Adicional:

se eu tiver uma classe foo e uma barra de método estático, posso registrar isso como retorno de chamada, passando a matriz array("foo","bar")como o nome da função.

Sim, você pode fazê-lo. Para a função estática, você pode escrevê-la como uma string em vez da matriz: foo::barconsulte Documentos de retornos de chamada . Pode ser útil.

hakre
fonte
1

Para métodos estáticos, você também pode fazer isso:

['foo','bar'] 

quando o seguinte fornece constante de classe indefinida 'bar' :

foo::bar

exemplo - ao especificar o $ control_callback para wp_add_dashboard_widget

William Turrell
fonte