在某些场景下,您可能需要将类方法作为回调传递给其他函数以提高效率具体任务的执行。本文将指导您完成实现此目的的各种机制。
要将函数作为回调传递,您可以直接将其名称作为字符串提供。但是,此方法不适用于类方法。
类实例方法可以使用数组作为回调传递,该数组以对象为第一个元素,方法名称为第二。这种方法在同一个类内部和外部都有效。
// 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']);
静态类方法不需要对象实例。它们可以直接作为包含类名和方法名的数组传递。
// 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
除了提到的方法之外,您还可以传递匿名函数作为回调,但这可能需要修改您的代码结构。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3