Anonymous function Also called closure function (closure allows the creation of a function without specifying the function, most often used as the value of the callback function parameter. The closure function has no function name and is directly used in function() When the variable is passed in, the defined variable will be treated as a function.
$cl = function($name){ returnsprintf('hello %s',name); } echo $cli('fuck')`
Call directly through the variable name defined as an anonymous function
echo preg_replace_callback('~-([a-z])~',function ($match) { returnstrtoupper($match[1]); }, 'hello-world');` 使用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'); example ?
class Cart{ //在类里面定义常量用 const 关键字,而不是通常的 define() 函数。 constPRICE_BUTTER = 1.00; constPRICE_MILK = 3.00; constPRICE_EGGS = 6.95; protected$products = []; publicfunction add($product,$quantity){ $this->products[$product] =$quantity; } publicfunction getQuantity($product){ //是否定义了 returnisset($this->products[$product])?$this->products[$product]:FALSE; } publicfunction 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); //回调匿名函数 returnround($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));
The above is the detailed content of Detailed explanation of PHP closure function examples. For more information, please follow other related articles on the PHP Chinese website!