PHP VERSION: 7.0.26

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:  1513245821.99445009
Stop:   1513245822.31918001
Elapsed: 0.32472992

Using call()

Start:  1513245822.31920409
Stop:   1513245822.48688507
Elapsed: 0.16768098
SOURCE CODE