PHP Classes
elePHPant
Icontem

File: dcart.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Dhiman Chakraborty  >  dcart  >  dcart.php  >  Download  
File: dcart.php
Role: Class source
Content type: text/plain
Description: Shopping Cart class in PHP
Class: dcart
Manage shopping cart items stored in sessions
Author: By
Last change:
Date: 1 year ago
Size: 1,862 bytes
 

Contents

Class file image Download
<?php
/**
 * Class dCart
 * Description Shopping Cart System
 * @author Dhiman Chakraborty
 * @date May 30, 2013
 */

class dCart{
    protected static
$instance;
    protected
$items;
    protected
$sessionIndex;
   
    public function
dCart(){
       
$this->items = array();
       
$this->writeSession();
        return
$this;
    }
   
    public static function
getInstance($sessionIndex = 'cart'){
       
self::startSession();
        if(!isset(
$_SESSION[$sessionIndex])){
           
$_SESSION[$sessionIndex] = new self;
        }
        return
$_SESSION[$sessionIndex];
    }
   
    public static function
startSession(){
        if(
session_id() == '') {
           
session_start();
        }
    }
   
   
    protected function
writeSession(){
       
$_SESSION[$this->sessionIndex] = $this->items;
    }
   
    public function
Add($newOrder = array()){
       
$itemFound = false;
        foreach(
$this->items as $key=>$item){
            if((
$item['id'] == $newOrder['id']) && array_key_exists('quantity',$this->items[$key]) && array_key_exists('quantity',$newOrder)){
               
$this->items[$key]['quantity'] += $newOrder['quantity'];
               
$itemFound = true;
            }
        }
        if(!
$itemFound){
           
array_push($this->items,$newOrder);
        }
       
$this->writeSession();
        return
$this;
    }
    public function
Remove($key = NULL){
       
        if(
func_num_args() != 0){
            unset(
$this->items[$key]);
           
sort($this->items);
        }else{
           
$this->items = array();
        }
       
$this->writeSession();
        return
$this;
    }
   
    public function
Edit($key = NULL,$index = NULL, $value = array()){
        if(
array_key_exists($key,$this->items) && array_key_exists($index,$this->items[$key])){
           
$this->items[$key][$index] = $value;
        }
       
$this->writeSession();
        return
$this;
    }
   
    public function
Show(){
        echo
"<pre>";
       
print_r($this->items);
        echo
"</pre>";
        return
$this;
    }
    public function
GetAll(){
        return
$this->items;
    }
}