PHP VERSION: 7.0.33

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:  1545223045.54759789
Stop:   1545223045.87104106
Elapsed: 0.32344317

Using call()

Start:  1545223045.87106395
Stop:   1545223046.03681207
Elapsed: 0.16574812
SOURCE CODE