PHP VERSION: 7.0.22

bind_closure_on_call.php

<?php

$a 
= function () { return $this->x; };
class 
FooBar { private $x 3; }
$foobar = new FooBar;

echo 
"Using bindTo()\n";
$start microtime(TRUE);
for (
$i 0$i 1000000$i++) {
    
$x $a->bindTo($foobar"FooBar");
    
$x();
}

$stop microtime(TRUE);
printf("\nStart:  %.8f\nStop:   %.8f\nElapsed: %.8f\n"$start$stop$stop $start);

echo 
"\nUsing call()\n";
$start microtime(TRUE);
for (
$i 0$i 1000000$i++) {
    
$a->call($foobar);
}
$stop microtime(TRUE);
printf("\nStart:  %.8f\nStop:   %.8f\nElapsed: %.8f\n"$start$stop$stop $start);

Output


Using bindTo()

Start:  1503148116.96658397
Stop:   1503148117.28957391
Elapsed: 0.32298994

Using call()

Start:  1503148117.28961205
Stop:   1503148117.46413302
Elapsed: 0.17452097
SOURCE CODE