Я хочу использовать 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? но этот вопрос касается стандартных методов, а не статики.
В соответствии с документация,
return array_map('self::pay', $model_list);
Обратите внимание, что ваша попытка включена ()
в строке имени метода, что было бы неправильно
Позвольте мне расширить ответ @ 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