php array_map与对象的静态方法

2022-08-30 15:58:10

我想将array_map与静态方法一起使用,但我失败了。这是我的代码:

Class Buy {

    public function payAllBills() {
        $bill_list = OtherClass::getBillList();
        return array_map(array(self, 'pay'), $bill_list); // Issue line
    }

    private static function pay($bill) {
        // Some stuff
        return true;
    }

}

PHP给了我一个错误:

Use of undefined constant self - assumed 'self'

我也试过:

return array_map('self::makeBean()', $model_list);

但它不起作用。

你知道如何使用array_map与静态方法?

我已经读过:在PHP 5.2中,方法可以用作array_map函数吗?但这个问题是关于标准方法的,而不是静态的。


答案 1

根据文档

return array_map('self::pay', $model_list);

请注意,您的尝试包含在方法名称字符串中,这将是错误的()


答案 2

让我扩展@mark-baker的答案:

如果要调用另一个类的静态方法,则必须将完整的命名空间放在引号中:

return array_map('Other\namespace\CustomClass::pay', $model_list);

使用 per 的类是不够的:use

// this is not enough:
// use Other\namespace\CustomClass;
return array_map('CustomClass::pay', $model_list); //does not work

推荐