使用闭包的好处是保持全局命名空间的干净,因为您不必先创建全局函数作为回调传递。
add_action('admin_init', function () {
// some code...
});
就个人而言,我更喜欢使用闭包作为回调,除非:
- 您希望删除回调的可能性
- 回调函数需要使用多次
- 您需要支持较旧的 PHP 版本(低于 5.3)
类中的闭包
闭包在类中也是有益的。
class SomeClass
{
public function __construct()
{
add_action('wp_head', function () {
$this->addSomeStyling();
});
}
protected function addSomeStyling()
{
echo '<style> body { color: #999; } </style>';
}
}
通常,需要公开回调方法,但在这种情况下,也可以将其设为私有或受保护。
此解决方案仅适用于 PHP 5.4+。为了使其适用于 PHP 5.3,您需要将对象引用显式传递给闭包,例如:$this
public function __construct()
{
$self = $this;
add_action('wp_head', function () use ($self) {
$self->addSomeStyling();
});
}