在PHP中使用回调函数时出现问题

时间:2012-08-23 02:34:34

标签: php callback

使用回调函数时遇到此问题

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 个答案:

答案 0 :(得分:1)

最后问题出在eaccelerator上。

执行代码时,eaccelerator版本1.0-dev崩溃了。 eaccelerator的0.9.6.1版本不会因代码而崩溃。

答案 1 :(得分:0)

Typos分开,$pad永远不会被定义。

然后array_map将不会调用您的$my_pad_function lambda函数,因为您将my_pad_function字符串作为第一个参数传递,告诉PHP查找名为 > my_pad_function:这与调用存储在$my_pad_function中的lambda不同。

无论如何,我建议你不要把所有东西都叫做“my_function”,“myPrettyFunction”,“myPointlessNameVar”:即使在游乐场代码中给出有意义的名字,你的目标也会更清晰。

最后一件事:

lambdas : PHP = lipstick : pig