Maison  >  Article  >  développement back-end  >  Classe de fermeture PHP

Classe de fermeture PHP

王林
王林avant
2023-08-19 11:01:17837parcourir

Classe de fermeture PHP

Présentation de

Les fonctions anonymes (également connues sous le nom de lambdas) renvoient des objets de la classe Closure. Cette classe possède des méthodes supplémentaires qui offrent un contrôle supplémentaire sur les fonctions anonymes.

Syntaxe

Closure {
   /* Methods */
   private __construct ( void )
   public static bind ( Closure $closure , object $newthis [, mixed $newscope = "static" ] ) : Closure
   public bindTo ( object $newthis [, mixed $newscope = "static" ] ) : Closure
   public call ( object $newthis [, mixed $... ] ) : mixed
   public static fromCallable ( callable $callable ) : Closure
}

Methods

private Closure::__construct ( void ) — Cette méthode est uniquement utilisée pour désactiver l'instanciation de la classe Closure. Les objets de cette classe sont créés par des fonctions anonymes.

public static Closure::bind ( Closure $closure , object $newthis [, Mixed $newscope = "static" ] ) − Closure — Copie une fermeture en utilisant un objet de liaison spécifique et une portée de classe. Cette méthode est la version statique de Closure::bindTo().

public Closure::bindTo ( object $newthis [, Mixed $newscope = "static" ] ) − Closure — Copie une fermeture en utilisant un nouvel objet de liaison et une nouvelle portée de classe. Crée et renvoie une nouvelle fonction anonyme avec le même corps et les mêmes variables de liaison, mais avec un objet différent et une nouvelle portée de classe.

public Closure::call ( object $newthis [, Mixed $... ] ) − Mixed — Liez temporairement une fermeture à newthis et appelez-la avec tous les arguments donnés.

Exemple de clôture

Démonstration en ligne

<?php
class A {
   public $nm;
   function __construct($x){
      $this->nm=$x;
   }
}
// Using call method
$hello = function() {
   return "Hello " . $this->nm;
};
echo $hello->call(new A("Amar")). "";;
// using bind method
$sayhello = $hello->bindTo(new A("Amar"),&#39;A&#39;);
echo $sayhello();
?>

Sortie

Le programme ci-dessus affiche la sortie suivante

Hello Amar
Hello Amar

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer