карта массива — php array_map со статическим методом объекта

Я хочу использовать 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 со статическим методом?

Я уже прочитал: Можно ли использовать метод в качестве функции array_map в PHP 5.2? но этот вопрос касается стандартных методов, а не статики.

10

Решение

В соответствии с документация,

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

Обратите внимание, что ваша попытка включена () в строке имени метода, что было бы неправильно

20

Другие решения

Позвольте мне расширить ответ @ mark-baker:

если вы хотите вызвать статический метод другого класса, вы должны поместить полное пространство имен в кавычки:

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

Использование класса за use недостаточно:

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector