Проблемы при использовании функции обратного вызова в 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.

Любые идеи, почему это происходит?

Заранее спасибо!

Наконец, проблема заключалась в использовании ускорителя.

Версия 1.0-dev из маркеров eaccelerator при выполнении кода. Версия 0.9.6.1 eaccelerator не сбой с кодом.

Опоры отдельно, $pad никогда не определяется.

Тогда array_map не будет вызывать вашу $my_pad_function лямбда $my_pad_function , потому что вы передали строку my_pad_function качестве первого параметра, my_pad_function PHP на поиск функции с именем my_pad_function : это отличается от вызова лямбда, хранящегося в $my_pad_function .

В любом случае, я советую вам не называть все «my_function», «myPrettyFunction», «myPointlessNameVar»: давать значащие имена даже в коде детской площадки, ваша цель будет более ясной.

Одна последняя вещь:

 lambdas : PHP = lipstick : pig