Closure
PHP Manual

Closure::bindTo

(PHP 5 >= 5.4.0)

Closure::bindTo Duplica la closure con una nuova associazione all'oggetto e alla visibilità della classe

Descrizione

public Closure Closure::bindTo ( object $newthis [, mixed $newscope = "static" ] )

Crea e restituisce una nuova funzione anonima come questa con lo stesso corpo e con le stesse variabili associate, ma possibilmente con un altro oggetto associato e una nuova visibilità della classe.

“L'oggetto associato” determina il valore che avrà $this nel corpo della funzione e la “visibilità della classe” rappresenta una classe che determina a quali membri private e protected la funzione sarà in grado di accedere. Ossia, i membri che saranno visibili sono gli stessi che sarebbero se la funzione anonima fosse un metodo della classe data come valore dal parametro newscope.

Le closure statiche non possono avere nessun oggetto associato (il valore del parametro newthis deve essere NULL), ma questa funzione può comunque essere utilizzata per cambiare la loro visibilità.

Questa funzione si assicurerà che per una closure non-statica, avere un'istanza associata implicherà essere convertita e viceversa. A tal fine, le closure non-statiche a cui sono date una visibilità diversa da un'istanza NULL sono rese statiche e le closure non-statiche senza visibilità a cui sono date un'istanza non null sono convertite in una classe non specificata.

Nota:

Se hai soltanto intenzione di duplicare la funzione anonima, invece puoi usare la clonazione.

Elenco dei parametri

newthis

L'oggetto al quale la funzione anonima data dovrebbe essere associata, o NULL per le closure da dissociare.

newscope

La visibilità della classe al quale associare la closure deve essere associata, o 'static' per mantenere il corrente. Se invece viene dato un oggetto, verrà usato il tipo dell'oggetto. Questo determina la visibilità dei metodi protected e private dell'oggetto associato.

Valori restituiti

Restituisce un nuovo oggetto Closure creato. o FALSE in caso di fallimento

Esempi

Example #1 Esempio di Closure::bindTo()

<?php

class {
    function 
__construct($val) {
        
$this->val $val;
    }
    function 
getClosure() {
        
//restituisce la closure associata con il suo oggetto e con la sua visibilità
        
return function() { return $this->val; };
    }
}

$ob1 = new A(1);
$ob2 = new A(2);

$cl $ob1->getClosure();
echo 
$cl(), "\n";
$cl $cl->bindTo($ob2);
echo 
$cl(), "\n";
?>

Il precedente esempio visualizzerà qualcosa simile a:

1
2

Vedere anche:


Closure
PHP Manual