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