当前位置: 58彩票app下载 > 编程技术 > 正文

浅析php创建者模式_php实例_脚本之家,php网上商城

时间:2019-12-17 20:34来源:编程技术
创作者形式: 先是,购物车的数据库设计: 1. id 2. goods_id 商品ID 3. session_id购物车ID 4. goods_sn 商品编码 5. goods_name 商品名称 6. shop_price商品商店销售价格 7. goods_price商品实际销售价格(与

创作者形式:

先是,购物车的数据库设计: 1. id 2. goods_id 商品ID 3. session_id 购物车ID 4. goods_sn 商品编码 5. goods_name 商品名称 6. shop_price 商品商店销售价格 7. goods_price 商品实际销售价格(与shop_price的界别在于,当打折的时候,shop_price是减价在此以前商品的售卖价格,而goods_price是减价之后的)

在创制者方式中,顾客端不再担当对象的缔造与组装,而是把那么些目的创设的任务交给其具体的奠基人类,把组装的权力和义务交给组装类,客商端支出对目标的调用,进而明显了各类类的天职。应用项景:创制特别复杂,分步骤组装起来。

  1. goods_number 数量 9. weight 商品重量 10. goods_attr 商品属性 11. promote_code 降价编码 12. is_promote 促销ID 13. stock_id 仓库储存ID 数据库布局大要上是其相符子。当然即便还也许有此外的必要,举个例子商品的返利积分,商品是或不是杜撰产物,商品是或不是代发货等等,可以另加标示符。这里就不后生可畏一比方了。 第二点,我们以此购物车要求是在客商不登录状态下能够把货品丰盛到购物车内的,那也是近年不胜流行的豆蔻梢头种方法,所以在购物车数据库设计之中,就从未出席user_id这一个字段,思索到的是客商未登录下也得以把货品归入购物车。 那么识别购物车到底是哪一人客商来说,就是急需用到session_id,是客商对应购物车的独一无二识别码。生成那么些码能够献身购物车对象Cart的结构函数里: 复制代码 代码如下: /** * 购物车类购物方式 * @param string $cart_id 购物车ID */ public function __construct() { Zend_Session::start(); $this->_session = new Zend_Session_Namespace; if(!isset($this->_session->session_id)) { $this->_session->session_id = md5, true)); $this->_session->info = array(); } $this->_cart_id = $this->_session->session_id; } 所有的事有利就有弊,这几个规划的利润是未登入就能够利用购物车;不佳处正是六个人共用生机勃勃台微微处理机,购物车无法看清商品到底是哪一位的。 第三点,增添多个货色到购物车。 增多二个商品到购物车,在这间,作者把它想成是四个动作。 第一个动作:加多商品到购物车数据Curry面。 首个动作:查找购物车全部商品,并展现出来。 首先是首个动作: 复制代码 代码如下: /** * 增添商品 */ public function goodsAddAction(卡塔尔(قطر‎ { // 增多货色使用get恳求 $goods_id = $this->_getParam;//商品ID $goods_spec = $this->_getParam;//商品性质 $goods_number = $this->_getParam;//商品数量 $promote_name = $this->_getParam('promote_name', 'Default'卡塔尔(英语:State of Qatar);//降价政策 //获取购物车实例 $cartB = $this->_getCart(); $cartB->goodsAdd($goods_id, $goods_spec, $goods_number, $promote_name卡塔尔; //增添成功,跳转到下一步,查找购物车全体商品,并显示出来。 $this->_showMessage(Bll_Context::isError() ? Bll_Context::getError(卡塔尔 : '增多到购物篮成功!', Bll_Context::getRecirect; } 上段代码第15行: $cartB->goodsAdd($goods_id, $goods_spec, $goods_number, $promote_name卡塔尔国; 这正是拉长商品操作函数,那此中的$promote_name是优惠的三个参数,具体是用政策形式来接收哪类巨惠政策,笔者计划在下风姿洒脱篇小说具体来谈谈。这里只要通晓是增加那么些商品的骨干消息,存入到购物车数据Curry就能够。 其次正是第1个动作: 复制代码 代码如下: /** * 购物列表 */ public function indexAction(卡塔尔国 { //获取购物车实例 $cartB = $this->_getCart(卡塔尔(قطر‎; //列出购物车内全数商品 $this->view->goods_list = $cartB->goodsViewList(卡塔尔(قطر‎; //获取用于显示准则音信的准则实例列表 $this->view->tips = $cartB->goodsTipRules(卡塔尔国; //购物车内物品资总公司量量 $this->view->total_number = $cartB->getTotalGoodsNumber(卡塔尔国; //获取购物车内商品总货额 $this->view->total_amount = $cartB->getTotalAmount(); }

复制代码 代码如下:_goods[] = $goods; } public function addTicket { $this->_tickets[] = $ticket; } public function printInfo(卡塔尔国 { printf("goods:%s, tickets:%sn", implode, implode卡塔尔国; }}//借使大家要还原购物车的事物,例如客户关闭浏览器后再展开时会依照cookie还原$data = array( 'goods' => array, 'tickets' => array;//倘诺不应用创制者情势,则须求工作类里一步步上涨购物车// $cart = new ShoppingCart(卡塔尔;// foreach ($data['goods'] as $goods) {// $cart->addGoods;// }// foreach ($data['tickets'] as $ticket卡塔尔(英语:State of Qatar) {// $cart->addTicket;// }// $cart->printInfo(卡塔尔;// exit;//我们提供创立者类来封装购物车的数量组装class CardBuilder { private $_card; function __construct { $this->_card = $card; } function build { foreach ($data['goods'] as $goods) { $this->_card->addGoods; } foreach ($data['tickets'] as $ticket) { $this->_card->addTicket; } } function getCrad() { return $this->_card; }}$cart = new ShoppingCart();$builder = new CardBuilder;$builder->build;echo "after builder:n";$cart->printInfo();?>

此地首先个和第四个动作必需是要分手的,因为客户也得以不增加商品直接点购物车。

能够见到,使用创立者方式对在那之中数据复杂的目的封装数据组装进度后,对外接口就能特别轻便和标准,扩展改革新数据项也不会对外表形成任何影响。

上面是功用图:

率先次发帖,有哪些不足,不知晓的,还请见谅。应接研商!

编辑:编程技术 本文来源:浅析php创建者模式_php实例_脚本之家,php网上商城

关键词: