VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP闭包函数详解

这篇文章主要为大家详细介绍了PHP闭包函数,闭包函数没有函数名称,直接在function()传入变量即可 使用时将定义的变量当作函数来处理,对PHP闭包函数感兴趣的朋友可以参考一下。

匿名函数也叫闭包函数(closures允许创建一个没有指定没成的函数,最经常用作回调函数参数的值。

闭包函数没有函数名称,直接在function()传入变量即可 使用时将定义的变量当作函数来处理

  1. $cl = function($name){ 
  2.   return sprintf('hello %s',name); 
  3. echo $cli('fuck')` 

直接通过定义为匿名函数的变量名称来调用

  1. echo preg_replace_callback('~-([a-z])~'function ($match) { 
  2.   return strtoupper($match[1]); 
  3. }, 'hello-world');` 

使用use

  1. $message = 'hello'
  2. $example = function() use ($message){ 
  3.   var_dump($message); 
  4. }; 
  5. echo $example(); 
  6. //输出hello 
  7. $message = 'world'
  8. //输出hello 因为继承变量的值的时候是函数定义的时候而不是 函数被调用的时候 
  9. echo $example(); 
  10. //重置为hello 
  11. $message = 'hello'
  12. //此处传引用 
  13. $example = function() use(&$message){ 
  14.  var_dump($message); 
  15. }; 
  16. echo $example(); 
  17. //输出hello 
  18. $message = 'world'
  19. echo $example(); 
  20. //此处输出world 
  21. //闭包函数也用于正常的传值 
  22. $message = 'hello'
  23. $example = function ($datause ($message){ 
  24.   return "{$data},{$message}"
  25. }; 
  26.  
  27. echo $example('world'); 

example

  1. class Cart{ 
  2.   //在类里面定义常量用 const 关键字,而不是通常的 define() 函数。 
  3.   const PRICE_BUTTER = 1.00; 
  4.   const PRICE_MILK  = 3.00; 
  5.   const PRICE_EGGS  = 6.95; 
  6.  
  7.   protected $products = []; 
  8.   public function add($product,$quantity){ 
  9.     $this->products[$product] = $quantity
  10.   } 
  11.   public function getQuantity($product){ 
  12.     //是否定义了 
  13.     return isset($this->products[$product])?$this->products[$product]:FALSE; 
  14.   } 
  15.   public function getTotal($tax){ 
  16.     $total = 0.0; 
  17.     $callback = function($quantity,$productuse ($tax , &$total){ 
  18.       //constant 返回常量的值 
  19.       //__class__返回类名 
  20.       $price = constant(__CLASS__."::PRICE_".strtoupper($product)); 
  21.  
  22.       $total += ($price * $quantity)*($tax+1.0); 
  23.     }; 
  24.     //array_walk() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数 
  25.     array_walk($this->products,$callback); 
  26.     //回调匿名函数 
  27.     return round($total,2); 
  28.  
  29.   } 
  30. }
  31.  
  32. $my_cart = new Cart(); 
  33. $my_cart->add('butter',1); 
  34. $my_cart->add('milk',3); 
  35. $my_cart->add('eggs',6);
  36.  
  37. print($my_cart->getTotal(0.05)); 

以上就是关于PHP闭包函数的相关内容,希望对大家的学习有所帮助。

出处:

http://www.phpfensi.com/php/20210709/17127.html
 

 


相关教程