Rechercher une fonction PHP

Closure::bindTo

(PHP 5 >= 5.4.0, PHP 7)

Closure::bindTo Duplique la fermeture avec un nouvel objet lié et un nouveau contexte de classe.

Description

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

Crée et retourne une nouvelle fonction anonyme avec le même corps et les même variables liées que l'originale, mais avec un objet lié qui peut être différent, et un nouveau contexte de classe.

L'objet lié détermine la valeur que $this aura dans le corps de la fonction, et le contexte de classe représente une classe qui détermine à quels membres privés et protégés la fonction anonyme aura accès. Autrement dit, les propriétés qui seront visibles seront les mêmes que si la fonction anonyme était une méthode de la classe passée via le paramètre newscope.

Les fermetures statiques ne peuvent pas avoir d'objet lié (la valeur du paramètre newthis devrait être NULL), mais le contexte de classe peut, lui, être changé.

Cette fonction va vérifier qu'une fermeture non-statique à laquelle on passe un contexte d'objet deviendra liée à cet objet (et ne sera donc plus non-statique), et vice-versa. Dans ce but, les fermetures non-statiques auxquelles on passe un contexte de classe mais NULL comme contexte objet seront rendues statiques, et inversement.

Note:

Si vous voulez seulement dupliquer la fonction anonyme, vous pouvez utiliser le clonage à la place.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

newthis

L'objet auquel lier la fonction anonyme, ou NULL pour une fermeture statique.

newscope

Le contexte de classe à associer à la fermeture, ou 'static' pour conserver le contexte actuel. Si un objet est passé, son type sera utilisé. Ceci determine la visibilité des méthodes protégées et privées de l'objet lié. Il n'est pas autorisé de passer (un objet d') une classe interne pour ce paramètre.

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

Retourne la nouvelle fermeture sous la forme d'un objet Closure, ou FALSE si une erreur survient

Retour à la première page de Manuel PHP  Table des matières Haut

Historique

Version Description
7.0.0 newscope ne peut plus être (un objet d') une class interne, ce qui était possible avant cette version.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

Exemple #1 Exemple Closure::bindTo()

<?php

class {
    function 
__construct($val) {
        
$this->val $val;
    }
    function 
getClosure() {
        
//retourne une fermeture liée à cet objet et ce contexte
        
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";
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

1
2

Retour à la première page de Manuel PHP  Table des matières Haut

Voir aussi

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-closure.bindto.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut