> 백엔드 개발 > PHP 튜토리얼 > PHP 장바구니 클래스 Cart.class.php 정의 및 사용 예

PHP 장바구니 클래스 Cart.class.php 정의 및 사용 예

coldplay.xixi
풀어 주다: 2023-04-09 10:44:01
앞으로
2604명이 탐색했습니다.

PHP 장바구니 클래스 Cart.class.php 정의 및 사용 예

이 문서의 예에서는 PHP 장바구니 클래스 Cart.class.php의 정의와 사용법을 설명합니다. 참고하시라고 공유해드리는데, 자세한 내용은 다음과 같습니다.

전 개발자가 JS 기술을 이용해 프런트엔드 장바구니를 개발했는데(JS는 삭제, 추가에 사용했습니다) 브라우저 호환성이 좋지 않았는데요, 그리고 오늘 문제가 발생했습니다. 외국인이 제품을 구매했는데 알 수 없는 브라우저, 크롬, 오페라 등을 사용했기 때문에 장바구니를 다시 작성하는 일이 있었습니다.

더 이상 JS를 사용할 계획이 없습니다. , 그리고 php를 직접 고려해보세요.

사용하기 매우 편리한 장바구니 클래스를 찾았습니다.

관련 학습 권장 사항: 초보부터 마스터까지 PHP 프로그래밍

Cart.class.php소스 코드:

<?php
/**
 * Cart
 *
 * 购物车类
 *
 * @author doodoo<pwtitle @yahoo.com.cn="">
 * @package  Cart
 * @category Cart
 * @license  PHP License
 * @access  public
 * @version  $Revision: 1.10 $
 */
Class Cart{
 var $cart;
 var $totalCount; //商品总数量
 var $totalPrices; //商品总金额
 /**
  * Cart Constructor
  *
  * 类的构造函数,使购物车保持稳定的初始化状态
  *
  * @static
  * @access public
  * @return void 无返回值
  * @param void 无参数
  */
 function Cart(){
 $this->totalCount = 0;
 $this->totalPrice = 0;
 $this->cart = array();
 }
 // }}}
 // {{{ add($item)
 /**
 * 增加商品到当前购物车
 *
 * @access public
 * @param array $item 商品信息(一维数组:array(商品ID,商品名称,商品单价,商品数量))
 * @return array 返回当前购物车内商品的数组
 */
 function add($item){
 if(!is_array($item)||is_null($item)) return $this->cart;
 if(!is_numeric(end($item))||(!is_numeric(prev($item)))) {
 echo "价格和数量必须是数字";
 return $this->cart;
 }
 reset($item); //这一句是必须的,因为上面的判断已经移动了数组的指标
 $key = current($item);
 if($key=="") return $this->cart;
 if($this->_isExists($key)){ //商品是否已经存在?
 $this->cart[$key][&#39;count&#39;] = end($item);
 return $this->cart;
 }
 $this->cart[$key][&#39;ID&#39;] = $key;
 $this->cart[$key][&#39;name&#39;] = next($item);
 $this->cart[$key][&#39;price&#39;] = next($item);
 $this->cart[$key][&#39;count&#39;] = next($item);
 return $this->cart;
 }
 // }}}
 // {{{ add($item)
 /**
 * 从当前购物车中取出部分或全部商品
 * 当 $key=="" 的时候,清空当前购物车
 * 当 $key!=""&&$count=="" 的时候,从当前购物车中拣出商品ID号为 $key 的全部商品
 * 当 $key!=""&&$count!="" 的时候,从当前购物车中拣出 $count个 商品ID号为 $key 的商品
 *
 * @access public
 * @param string $key 商品ID
 * @return mixed 返回真假或当前购物车内商品的数组
 */
 function remove($key="",$count=""){
 if($key=="") {
 $this->cart = array();
 return true;
 }
 if(!array_key_exists($key,$this->cart)) return false;
 if($count==""){ //移去这一类商品
 unset($this->cart[$key]);
 }else{ //移去$count个商品
 $this->cart[$key][&#39;count&#39;] -= $count;
 if($this->cart[$key][&#39;count&#39;]<=0) unset($this->cart[$key]);
 }
 return $this->cart;
 }
 // }}}
 // {{{ modi($key,$value)
 /**
 * 修改购物车内商品ID为 $key 的商品的数量为 $value
 *
 * @access public
 * @param string $key 商品ID
 * @param int $value 商品数量
 * @return array 返回当前购物车内商品的数组;
 */
 function modi($key,$value){
 if(!$this->_isExists($key)) return $this->cart(); //不存在此商品,直接返回
 if($value<=0){  // value 太小,全部删除
 unset($this->cart[$key]);
 return $this->cart;
 }
 $this->cart[$key][&#39;count&#39;] = $value;
 return $this->cart;
 }
 /**
 * 返回当前购物车内商品的数组
 *
 * @access public
 * @return array 返回当前购物车内商品的数组;
 */
 function getCart(){
 return $this->cart;
 }
 // }}}
 // {{{ _isExists($key)
 /**
 * 判断当前购物车中是否存在商品ID号为$key的商品
 *
 * @access private
 * @param string $key 商品ID
 * @return bool true or false;
 */
 function _isExists($key)
 {
 if(isset($this->cart[$key])&&!empty($this->cart[$key])&&array_key_exists($key,$this->cart))
 return true;
 return false;
 }
 // }}}
 // {{{ isEmpty()
 /**
 * 判断当前购物车是否为空,即没有任何商品
 *
 * @access public
 * @return bool true or false;
 */
 function isEmpty(){
 return !count($this->cart);
 }
 // }}}
 // {{{ _stat()
 /**
 * 取得部分统计信息
 *
 * @access private
 * @return bool true or false;
 */
 function _stat(){
 if($this->isEmpty()) return false;
 foreach($this->cart as $item){
 $this->totalCount = @end($item);
 $this->totalPrices = @prev($item);
 }
 return true;
 }
 // }}}
 // {{{ totalPrices()
 /**
 * 取得当前购物车所有商品的总金额
 *
 * @access public
 * @return float 返回金额;
 */
 function totalPrices(){
 if($this->_stat())
 return $this->totalPrices;
 return 0;
 }
 // }}}
 // {{{ isEmpty()
 /**
 * 取得当前购物车所有商品的总数量和
 *
 * @access public
 * @return int ;
 */
 function totalCount(){
 if($this->_stat())
 return $this->totalCount;
 return 0;
 }
}//End Class Cart
?>
로그인 후 복사

사용 방법 이 수업:

<?php
header("Content-type:text/html;charset=utf8");
//调用实例
require_once &#39;Cart.class.php&#39;;
session_start();
if(!isset($_SESSION[&#39;cart&#39;])) {
 $_SESSION[&#39;cart&#39;] = new Cart;
}
$cart =& $_SESSION[&#39;cart&#39;];
if( ($_SERVER[&#39;REQUEST_METHOD&#39;]=="POST")&&($_POST[&#39;action&#39;]==&#39;add&#39;) ){
 $p = $_POST[&#39;p&#39;];
 $items = $cart->add($p);
}
if( ($_GET[&#39;action&#39;]==&#39;remove&#39;)&&($_GET[&#39;key&#39;]!="") ) {
 $items = $cart->remove($_GET[&#39;key&#39;]);
}
if( ($_SERVER[&#39;REQUEST_METHOD&#39;]=="POST")&&($_POST[&#39;action&#39;]==&#39;modi&#39;) ){
 $key = $_POST[&#39;key&#39;];
 $value = $_POST[&#39;value&#39;];
 for($i=0;$i<count ($key);$i="" $items="$cart-" ){="">modi($key[$i],$value[$i]);
 }
}
$items = $cart->getCart();
//打印
echo "";
setlocale(LC_MONETARY, &#39;it_IT&#39;);
foreach($items as $item){
 echo "";
 echo "<table border="1"><tbody><tr><form action="\&quot;index.php\&quot;" method="\" post\??=""></form><td>ID:".$item[&#39;ID&#39;]."<input type="hidden" value=".$item[&#39;ID&#39;]." name="key[]">"; echo "</td><td>产品:".$item[&#39;name&#39;]; echo "</td><td>单价:".$item[&#39;price&#39;]; echo "</td><td><input value=".$item[&#39;count&#39;]." name="value[]">"; $sum = $item[&#39;count&#39;]*$item[&#39;price&#39;]; echo "</td><td>合计:".round($sum,2); echo "</td><td><input onclick="\&quot;location=&#39;?action=remove&key=&quot;.$item[&#39;ID&#39;].&quot;&#39;\&quot;" type="button" value="删除">"; } echo "<input type="hidden" value="modi" name="action">"; echo "</td></tr><tr><td colspan="7"><input type="submit" value="提交查询内容">"; echo "</td></tr></tbody></table>";
?>
<hr>
<form action="tmp.php" method="post">
ID:<input name="p[]">
品名:<input name="p[]">
单价:<input name="p[]">
数量:<input name="p[]">
<input type="hidden" value="add" name="action">
<input type="submit" value="提交查询内容">
</form></count>
로그인 후 복사

위 내용은 PHP 장바구니 클래스 Cart.class.php 정의 및 사용 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:jb51.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿