Maison > développement back-end > tutoriel php > Explication détaillée des exemples de code de fonction de fermeture PHP

Explication détaillée des exemples de code de fonction de fermeture PHP

伊谢尔伦
Libérer: 2023-03-12 09:46:01
original
1769 Les gens l'ont consulté

Cet article présente principalement la fonction de fermeture PHP. La fonction de fermeture n'a pas de nom de fonction. Lorsque la variable est transmise directement à function(), la variable définie est traitée comme une fonction pour les amis de fermeture PHP. sont intéressés par les fonctions peuvent se référer à

Les fonctions anonymes sont aussi appelées fonctions de fermeture (les fermetures permettent la création d'une fonction non spécifiée, le plus souvent utilisée comme rappels La valeur du paramètre de fonction .

La fonction de fermeture n'a pas de nom de fonction. Lorsque la variable est transmise à function(), la variable définie est traitée comme une fonction

  $cl = function($name){
    return sprintf('hello %s',name);
  }
  echo $cli('fuck')`
Copier après la connexion
Appelez

echo preg_replace_callback('~-([a-z])~', function ($match) {
  return strtoupper($match[1]);
}, 'hello-world');`
Copier après la connexion

directement via le nom d'une variable définie comme une fonction anonyme en utilisant use

$message = 'hello';
$example = function() use ($message){
  var_dump($message);
};
echo $example();
//输出hello
$message = 'world';
//输出hello 因为继承变量的值的时候是函数定义的时候而不是 函数被调用的时候
echo $example();
//重置为hello
$message = 'hello';
//此处传引用
$example = function() use(&$message){
 var_dump($message);
};
echo $example();
//输出hello
$message = 'world';
echo $example();
//此处输出world
//闭包函数也用于正常的传值
$message = 'hello';
$example = function ($data) use ($message){
  return "{$data},{$message}";
};

echo $example('world');
Copier après la connexion
exemple

class Cart{
  //在类里面定义常量用 const 关键字,而不是通常的 define() 函数。
  const PRICE_BUTTER = 1.00;
  const PRICE_MILK  = 3.00;
  const PRICE_EGGS  = 6.95;

  protected $products = [];
  public function add($product,$quantity){
    $this->products[$product] = $quantity;
  }
  public function getQuantity($product){
    //是否定义了
    return isset($this->products[$product])?$this->products[$product]:FALSE;
  }
  public function getTotal($tax){
    $total = 0.0;
    $callback = function($quantity,$product) use ($tax , &$total){
      //constant 返回常量的值
      //class返回类名
      $price = constant(CLASS."::PRICE_".strtoupper($product));

      $total += ($price * $quantity)*($tax+1.0);
    };
    //array_walk() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数
    array_walk($this->products,$callback);
    //回调匿名函数
    return round($total,2);

  }
}


$my_cart = new Cart();
$my_cart->add('butter',1);
$my_cart->add('milk',3);
$my_cart->add('eggs',6);


print($my_cart->getTotal(0.05));
Copier après la connexion
Ce qui précède est le contenu pertinent sur la fonction de fermeture PHP, j'espère qu'il sera utile à l'apprentissage de tout le monde

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal