PHP 7.2.0 Release Candidate 4 Released

Closure::call

(PHP 7)

Closure::callVincula y llama al cierre

Descripción

public mixed Closure::call ( object $newthis [, mixed $... ] )

Vincula temporalmente el cierre a newthis, y lo llama con cualquier parámetro dado.

Parámetros

newthis

El object a vincular al cierre mientras dure la llamada.

...

Cero o más parámetros, que serán dados como parámetros al cierre.

Valores devueltos

Devuelve el valor devuelto por el cierre.

Ejemplos

Ejemplo #1 Ejemplo de Closure::call()

<?php
class Valor {
    protected 
$valor;

    public function 
__construct($valor) {
        
$this->valor $valor;
    }

    public function 
getValor() {
        return 
$this->valor;
    }
}

$tres = new Valor(3);
$cuatro = new Valor(4);

$cierre = function ($delta) { var_dump($this->getValor() + $delta); };
$cierre->call($tres4);
$cierre->call($cuatro4);
?>

El resultado del ejemplo sería:

int(7)
int(8)
add a note add a note

User Contributed Notes 1 note

up
1
sergey dot nevmerzhitsky at gmail dot com
1 year ago
Prior PHP 7.0 you can use this code:

<?php
$cl
= function($add) { return $this->a + $add; };

$cl->bindTo($newthis);
return
call_user_func_array($cl, [10]);
?>

But this bind the closure permanently! Also read the article for Closure::bindTo() about binding closures from static context.
To Top