ScotlandPHP

Closure::call

(PHP 7)

Closure::callСвязывает и запускает замыкание

Описание

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

Временно связывает замыкание с newthis, и вызывает его с заданными параметрами.

Список параметров

newthis

Объект (object) для связи с замыканием на время его запуска.

...

Ноль или больше параметров, которые передаются замыканию.

Возвращаемые значения

Возвращает возвращаемое значение замыкания

Примеры

Пример #1 Пример Closure::call()

<?php
class Value {
    protected 
$value;

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

    public function 
getValue() {
        return 
$this->value;
    }
}

$three = new Value(3);
$four = new Value(4);

$closure = function ($delta) { var_dump($this->getValue() + $delta); };
$closure->call($three4);
$closure->call($four4);
?>

Результат выполнения данного примера:

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