Maison  >  Article  >  développement back-end  >  Comment utiliser et présenter la classe PHP Closure

Comment utiliser et présenter la classe PHP Closure

墨辰丷
墨辰丷original
2018-06-07 09:30:021598parcourir

Cet article présente principalement comment utiliser la classe PHP Closure. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Les fonctions de fermeture, anonymes, également connues sous le nom de fonctions anonymes, ont été introduites dans php5.3. La fonction anonyme est une fonction sans nom défini. Gardez cela à l’esprit et vous pourrez comprendre la définition des fonctions anonymes.

Introduction à la classe Closure (PHP 5 >= 5.3.0), une classe utilisée pour représenter les fonctions anonymes (introduites dans PHP 5.3) produira des objets de ce type. PHP Comment utiliser et présenter la classe Closure.

La classe PHP Closure a été introduite auparavant dans l'interface prédéfinie PHP, mais ce n'est pas une interface, c'est une classe finale interne. La classe Closure est utilisée pour représenter des fonctions anonymes, et toutes les fonctions anonymes sont des instances de la classe Closure.

$func = function() {
  echo 'func called';
};
var_dump($func); //class Closure#1 (0) { }
$reflect =new ReflectionClass('Closure');
var_dump(
  $reflect->isInterface(), //false
  $reflect->isFinal(), //true
  $reflect->isInternal() //true
);

La structure de la classe Closure est la suivante :

Closure::__construct — un constructeur utilisé pour interdire l'instanciation
Closure::bind — copier un package de fermeture, lie l'objet $this spécifié et la portée de la classe.
Closure::bindTo — Copiez l'objet de fermeture actuel et liez l'objet $this et la portée de classe spécifiés.

Regardez un exemple de liaison de $this object et scope :

class Lang
{
  private $name = 'php';
}
$closure = function () {
  return $this->name;
};
$bind_closure = Closure::bind($closure, new Lang(), 'Lang');
echo $bind_closure(); //php

De plus, PHP utilise la méthode magique __invoke() pour transformer une classe en fermeture :

class Invoker {
  public function __invoke() {return __METHOD__;}
}
$obj = new Invoker;
echo $obj(); //Invoker::__invoke

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

PHP+Mysql+jQuery compte le nombre d'utilisateurs en ligne actuels

implémente PHP format numérique, une fonction fonctionnelle pour ajouter des virgules tous les trois chiffres d'un nombre

Programme de conversion verticale chinoise PHP

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn