PHP閉包関数の詳細
2569 ワード
匿名関数は閉パッケージ関数とも呼ばれます(closuresでは、指定されていない関数を作成できます.コールバック関数パラメータの値として最もよく使用されます.
閉パッケージ関数には関数名がなく、function()が変数を直接入力して使用できる場合に定義された変数を関数として処理します.
匿名関数として定義された変数名で直接呼び出す
useの使用
example
以上、PHP閉包関数についての内容ですが、皆さんの勉強に役立つことを願っています.
閉パッケージ関数には関数名がなく、function()が変数を直接入力して使用できる場合に定義された変数を関数として処理します.
$cl = function($name){
return sprintf('hello %s',name);
}
echo $cli('fuck')`
匿名関数として定義された変数名で直接呼び出す
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($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() 。
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));
以上、PHP閉包関数についての内容ですが、皆さんの勉強に役立つことを願っています.