Em alguns cenários, pode ser necessário passar métodos de classe como retornos de chamada para outras funções para obter eficiência execução de tarefas específicas. Este artigo orienta você através dos vários mecanismos para conseguir isso.
Para passar uma função como um retorno de chamada, você pode fornecer diretamente seu nome como uma string. No entanto, este método não é aplicável a métodos de classe.
Os métodos de instância de classe podem ser passados como retornos de chamada usando uma matriz com o objeto como o primeiro elemento e o nome do método como o segundo. Essa abordagem funciona dentro e fora da mesma classe.
// Inside the same class
$this->processSomething([$this, 'myCallback']);
$this->processSomething([$this, 'myStaticCallback']);
// Outside the same class
$myObject->processSomething([new MyClass(), 'myCallback']);
$myObject->processSomething([new MyClass(), 'myStaticCallback']);
Métodos de classe estática não requerem uma instância de objeto. Eles podem ser passados diretamente como um array contendo o nome da classe e o nome do método.
// Inside the same class
$this->processSomething([__CLASS__, 'myStaticCallback']);
// Outside the same class
$myObject->processSomething(['\Namespace\MyClass', 'myStaticCallback']);
$myObject->processSomething(['\Namespace\MyClass::myStaticCallback']); // PHP 5.2.3
$myObject->processSomething([MyClass::class, 'myStaticCallback']); // PHP 5.5.0
Além dos métodos mencionados, você também pode passar funções anônimas como retornos de chamada, mas isso pode exigir modificações na estrutura do seu código.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3