传递$ this的php array_filter匿名函数

时间:2013-11-03 15:59:11

标签: php

如果想要执行以下操作:

    $filteredValues = array_filter($rawValues, function($rawValue) {
        return $this->validateValue($rawValue);
    });

validateValue是同一类中的私有方法。

如何以这种方式在array_filter中使用$ this上下文?

1 个答案:

答案 0 :(得分:2)

如果您使用PHP 5.3,PHP无法将$this识别为闭包,您需要像JavaScript那样做一些技巧:

$self = $this;
$filteredValues = array_filter($rawValues, function($rawValue) use ($self) {
    return $self->validateValue($rawValue);
});

请注意,上述内容只允许您通过对象的公共API访问该对象。这不同于对Closure重新绑定的5.4支持,它允许完全访问$this