码迷,mamicode.com
首页 > 其他好文 > 详细

一个很糟糕的写法 这是在犯罪

时间:2014-08-01 16:23:03      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:os   io   数据   cti   ar   管理   new   数据库   

功能说明:提交订单之后,增加消费记录,扣除用户余额

//更新积分值
	public function saveMoney($uid, $money, $remark, $paymment, $chargetypes, $orderno, $status) {
		$sql = "UPDATE $this->_member_list SET money=money+$money WHERE uid=$uid";
		$row = $this->exec ( $sql );
		//增加历史记录
		if ($row > 0) {
			return $this->add ( $this->_money_history, array (‘uid‘ => $uid, ‘coupons‘ => $money, ‘date‘ => time (), ‘payment‘ => $paymment, ‘chargetypes‘ => $chargetypes, ‘remark‘ => $remark, ‘orderno‘ => $orderno, ‘status‘ => $status ) );
		}
		return 0;
	}


这个方法涉及到2个模型,用户模型和订单(在controller中耦合)

好处:假如我要替换一个用户系统,那么,我只需要管理MemberService服务类即可,跟订单完全没有关系,用户有没有减去钱,跟订单有个毛线关系,这叫做职责性。

规则:在Service类中,只能操作自己有关的数据表(按找功能导向写)tabprefix前缀相同的 如w_member*  w_order*等



<?php
//用户服务类
class MemberService {
	
	public function saveMoney() {
		//减去用户钱包中的钱
	}

}

class OrderController {
	/**
	 * 在控制器中进行耦合
	 */
	public function addOrder() {
		
		$money = self::getOrderService ()->cost ( $this->_user [‘uid‘], $_POST [‘order‘] );
		self::getMemberService ()->saveMoney ( $this->_user [‘uid‘], $money );

	}
	
	public static function getOrderService() {
		return new OrderService ();
	}
	
	public static function getMemberService() {
		return new MemberService ();
	}

}

//模型 这里不允许有任何关于用户的信息 这和订单有关
class OrderService {
	
	public function cost($uid, $order) {
		//这里始终要减去用户钱包中的钱
		$order = new OrderModel ();
		$order->addMoneyHistory ( $uid, $order );
		return $order [‘money‘];
	}

}

/**
 * 数据库操作类
 */
class OrderModel {
	/**
	 * 添加消费历史记录
	 * @param int $uid  用户id
	 * @param decimal $money  消费金额
	 * @param Array $order 订单信息
	 */
	public function addMoneyHistory($uid, $order) {
		$param = array (‘uid‘ => $uid, ‘coupons‘ => $order [‘money‘], ‘date‘ => time (), ‘payment‘ => $order [‘payment‘], ‘chargetypes‘ => $order [‘chargetypes‘], ‘remark‘ => $order [‘remark‘], ‘orderno‘ => $order [‘orderno‘], ‘status‘ => $order [‘status‘] );
		$this->add ( $this->_money_history, $param );
	}
}

一个很糟糕的写法 这是在犯罪,布布扣,bubuko.com

一个很糟糕的写法 这是在犯罪

标签:os   io   数据   cti   ar   管理   new   数据库   

原文地址:http://my.oschina.net/u/554046/blog/297145

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!