首页 > 编程语言 >PHP一个典型的闭包实例

PHP一个典型的闭包实例

时间:2023-02-01 13:02:35浏览次数:48  
标签:闭包 function product cart add 实例 products PHP my

<?php
// 一个基本的购物车,包括一些已经添加的商品和每种商品的数量。
// 其中有一个方法用来计算购物车中所有商品的总价格,该方法使
// 用了一个 closure 作为回调函数。


class Carts {

const PRICE_BUTTER = 1.0;
const PRICE_MILK = 3.0;
const PRICE_EGGS = 6.95;

protected $products = array();

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.00;
$callback = function ($quantity,$product) use ($tax,&$total) {
$pricePerItem = constant(self."::PRICE_".strtoupper($product));
$total += ($pricePerItem * $quantity) * ($tax + 1.0);
};
array_walk($this->products,$callback);
return round($total,2);
}

}

//往购物车添加
$my_cart = new Carts();
$my_cart->add('butter',1);
$my_cart->add('milk',3);
$my_cart->add('eggs',6);
//打印税
echo $my_cart->getTotal(0.05);

 



标签:闭包,function,product,cart,add,实例,products,PHP,my
From: https://blog.51cto.com/u_2820398/6031403

相关文章

  • php使用魔法函数和不使用魔法函数比较
    /***usemagic0.31868386268616s*notusemagic0.11876797676086s*/classTest{private$varstr="123";function__get($name){return$this->vars......
  • Android全局获取Context上下文实例
    如题,在没有用到Activity的类中也能轻松获取上下文Context实例方法很简单,继承Application,提供获取上下文的静态方法供全局调用在Application类的onCreate()方法中获取Con......
  • Swift开篇005->闭包
    PART_A背景闭包的概念:自包含的函数代码块,可以在代码中被传递和使用.用简洁语法构建内联闭包闭包的三种形式全局函数是一个有名字但不会捕获任何值的闭包嵌套函数是一个有......
  • 使用一个 mysqld exporter 监控所有的MySQL实例
    说明之前文章有聊过使用Prometheus监控自建Mysql,感兴趣的同学可以看下。本次我们简单聊下结合consulmanager使用一个mysqldexporter监控所有的MySQL实例的具体实现方法......
  • 代码实例解读如何安全发布对象
    摘要:在高并发环境下如何安全的发布对象实例。本文分享自华为云社区《【高并发】如何安全的发布对象(含各种单例代码分析)》,作者:冰河。今天,为大家带来一篇有技术含量的文章......
  • PHP 将内容保存为Excel
    //使用这一对Header,程序中所有输出内容会保存至一份excel中并下载header('Content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');head......
  • 实例化bean的四种方法
    方法一:用构造方法实例化bean提供可靠的构造方法,不写默认调用无参构造方法//配置<beanid="bookDao"class="org.wcx.dao.impl.BookDaoImpl"/> 方法二:用静态工厂实......
  • PHP实现生成二维码代码展示
    本文为小伙伴们带来的是关于PHP实现生成二维码代码展示,前言为了满足用户渠道推广分析和用户账号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可......
  • Java斐波那契数列实例
      在斐波那契数列中,下一个数字是前两个数字的总和,例如:0,1,1,2,3,5,8,13,21,34,55等。斐波那契数列的前两个数字是0和1,第三个数字是前两个数字的和,也就是0+1=1,所以这......
  • Java素数实例
    质数(primenumber)又称素数,有无限个。质数定义是:在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。例如,2,3,5,7,11,13,17….是素数。注意:0和1不是素数。2是......