相关疑难解决方法(0)

PHP中的闭包或create_function

我已经决定使用闭包来代替我的回调create_function,因此只支持PHP> 5.3,主要是因为增加了可调试性,也因为我假设(他们对假设的说法是什么?)是on-the的开销. -fly编译create_function在我的情况下可能会抵消任何额外的比较,并且必须在函数内进行.

这可能仍然是这种情况(对于我的应用程序)并且需要进一步测试,但我对这个(非常)简单测试的输出感兴趣,该测试显示该create_function方法的速度比关闭时快两倍以上只有四个条件(和concats).显然在我的测试用例中没有进行额外的处理,这就是大部分速度将会获得或丢失的地方,但是在你没有多少额外处理但是有很多条件(可以删除)和回调被调用足够多次我开始认为使用它可能更好create_function.

然而,create_function和之间有明显的相似性eval,我对它很谨慎.

所以主要的问题是创建的匿名函数create_function和闭包函数之间的区别是什么?

我正在考虑的一些具体问题,create_function甚至可以在eval禁用功能时使用?并且,我确信我最近在某处读到,create_function即使声明为内部函数,函数也会污染全局(或类)命名空间,但闭包不会.我现在找不到对此的引用,但这些陈述中的一个或两个都是真的吗?


这是我跑的小测试:

<?php

function foo($a=true, $b=true, $c=true, $d=true)
{
    $inner1 = create_function(
        '', 
        '$r = \''.($a ? 'a' : '').
                  ($b ? 'b' : '').
                  ($c ? 'c' : '').
                  ($d ? 'd' : '').'\';
         return $r;'
    );  


    $inner2 = function() use ($a, $b, $c, $d) 
    {   
        $r = ''; 
        if($a) { $r .= …
Run Code Online (Sandbox Code Playgroud)

php closures callback anonymous-function

3
推荐指数
1
解决办法
2547
查看次数

标签 统计

anonymous-function ×1

callback ×1

closures ×1

php ×1