cari
Rumahphp教程PHP源码商城购物车以PHP单例模式实现。

1. [代码][PHP]代码   

<?php
class Cart{
    static protected $ins;          //实例变量
    protected $item = array();       //放商品容器
    //禁止外部调用
    final protected function __construct(){
    }

    //禁止克隆
    final protected function __clone(){
    }

    //类内部实例化
    static protected function Getins(){
        if(!(self::$ins instanceof self)){
            self::$ins = new self();
        }
        return self::$ins;
    }

    //为了能使商品跨页面保存,把对象放入session里
    public function Getcat(){
        if(!($_SESSION[&#39;cat&#39;]) || !($_SESSION[&#39;cat&#39;] instanceof self)){
            $_SESSION[&#39;cat&#39;] = self::Getins();
        }
        return $_SESSION[&#39;cat&#39;];
    }

    //入列时的检验,是否在$item里存在.
    public function Initem($goods_id){
        if($this->Gettype() == 0){
            return false;
        }
        if(!(array_key_exists($goods_id,$this->item))){
            return false;
        }else{
            return $this->item[$goods_id][&#39;num&#39;];   //返回此商品个数
        }
    }

    //添加一个商品
    public function Additem($goods_id,$name,$num,$price){
        if($this->Initem($goods_id) != false){
            $this->item[$goods_id][&#39;num&#39;] += $num;
            return;
        }
        $this->item[$goods_id] = array();               //一个商品为一个数组
        $this->item[$goods_id][&#39;num&#39;] = $num;           //这一个商品的购买数量
        $this->item[$goods_id][&#39;name&#39;] = $name;         //商品名字
        $this->item[$goods_id][&#39;price&#39;] = $price;       //商品单价
    }

    //减少一个商品
    public function Reduceitem($goods_id,$num){
        if($this->Initem($goods_id) == false){
            return;
        }
        if($num > $this->Getunm($goods_id)){
            unset($this->item[$goods_id]);
        }else{
            $this->item[$goods_id][&#39;num&#39;] -=$num;
        }
    }

    //去掉一个商品
    public function Delitem($goods_id){
        if($this->Initem($goods_id)){
            unset($this->item[$goods_id]);
        }
    }

    //返回购买商品列表
    public function Itemlist(){
        return $this->item;
    }

    //一共有多少种商品
    public function Gettype(){
        return count($this->item);
    }
    
    //获得一种商品的总个数
    public function Getunm($goods_id){
        return $this->item[$goods_id][&#39;num&#39;];
    }

    // 查询购物车中有多少个商品
    public function Getnumber(){
        $num = 0;
        if($this->Gettype() == 0){
            return 0;
        }
        foreach($this->item as $k=>$v){
            $num += $v[&#39;num&#39;];
        }

        return $num;
    }

    //计算总价格
    public function Getprice(){
        $price = 0;
        if($this->Gettype() == 0){
            return 0;
        }
        foreach($this->item as $k=>$v){
            $price += $v[&#39;num&#39;]*$v[&#39;num&#39;];
        }
        return $price;
    }

    //清空购物车
    public function Emptyitem(){
        $this->item = array();
    }
}
/*
     自己测试代码也拿出来
*/
?php
include_once(&#39;Cart.php&#39;);
$cart = Cart::Getcat();
$cart->Additem(&#39;1&#39;,&#39;谍匪&#39;,&#39;5&#39;,&#39;9999&#39;);
print_r($cart);

                   

                   

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).