Проблемы при использовании функции обратного вызова в PHP
У меня возникла эта проблема при использовании функций обратного вызова
Class My_Class {
public function my_function() {
$pad = function($value) {
return str_pad($value, 2, '0', STR_PAD_LEFT);
};
function pad_function($value) {
return str_pad($value, 2, '0', STR_PAD_LEFT);
}
array_map($pad, range(0,100)); //This fails with an exception "Invalid opcode 153/1/8."
array_map("pad_function", range(0,100)); //This works ok
}
}
Я использую PHP версии 5.3.3-7.
Есть идеи, почему это происходит?
Заранее спасибо!
2 ответа
Наконец проблема была с eaccelerator.
Версия 1.0-dev eaccelerator вызывает сбои при выполнении кода. Версия 0.9.6.1 eaccelerator не завершается с кодом.
Проверь, $pad
никогда не определяется.
затем array_map
не буду звонить вашему $my_pad_function
лямбда-функция, потому что вы прошли my_pad_function
строка в качестве первого параметра, указывающая PHP искать функцию с именем my_pad_function
: это отличается от вызова лямбда хранится в $my_pad_function
,
В любом случае, я советую вам не называть все "my_function", "myPrettyFunction", "myPointlessNameVar": дайте значимые имена даже в коде игровой площадки, ваша цель будет более понятной.
Одна последняя вещь:
lambdas : PHP = lipstick : pig