PHP VERSION: 7.0.30

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:  1529795651.49068999
Stop:   1529795651.81566191
Elapsed: 0.32497191

Using call()

Start:  1529795651.81568408
Stop:   1529795651.98314190
Elapsed: 0.16745782
SOURCE CODE