ShoppingCart is a simple PHP package that provides you with a simple shopping cart implementation stored in session
.
You can install it using composer:
composer require lombervid/shoppingcart
Create an instance of ShoppingCart
class.
use Lombervid\ShoppingCart\ShoppingCart;
$shoppingCart = new ShoppingCart();
You can add items calling the method add()
passing an Item
instance as parameter.
use Lombervid\ShoppingCart\Item;
use Lombervid\ShoppingCart\ShoppingCart;
$cart = new ShoppingCart();
$cart->add(new Item('1', 'Cake', 15.56));
$cart->add(new Item('15', 'Frappe', 5));
foreach ($cart->items() as $item) {
// $item->id
// $item->name
}
at this point your $cart->items()
will look like this:
array:2 [▼
1 => Lombervid\ShoppingCart\Item {#5 ▼
-id: "1"
-name: "Cake"
-price: 15.56
}
15 => Lombervid\ShoppingCart\Item {#6 ▼
-id: "15"
-name: "Frappe"
-price: 5.0
}
]
You can also add extra fields (such as price, name, etc) to your item. The Item
constructor receives a parameter fields
which is an Array
with the following structure:
[
'field_name' => 'field_value',
'field_2_name' => 'field_2_value'
]
when you provide the $fields
param, each field of the array is added to your item.
$fields = [
'size' => 'XL',
'color' => 'blue'
];
$item = new Item('23', 'My Shirt', 2.5, fields: $fields);
$cart->add($item);
with the above code your $cart->items()
will look line:
array:1 [▼
23 => Lombervid\ShoppingCart\Item {#5 ▼
-id: "23"
-name: "My Shirt"
-price: 2.5
-qty: 1
-fields: array:2 [▼
"size" => "XL"
"color" => "blue"
]
}
]
Then you can access any extra field as if they were properties:
foreach ($cart->items() as $item) {
// $item->size
// $item->color
}
You can remove an item from the cart calling the method remove($id)
which receive item's $id
as parameter.
$cart->remove(23);
You can clear the cart calling the method clear()
which removes all the items from the cart.
$shoppingCart->clear();
It is an array
of options. The default value is:
[
'name' => 'shopping_cart',
'autosave' => true,
'tax' => 0,
'shipping' => [
'amount' => 0,
'free' => 0,
],
]
Option | Type | Default | Description |
---|---|---|---|
name |
string |
shopping_cart |
Cart's name. Used to save the cart in storage |
autosave |
bool |
true |
If set to true , cart is saved when object is destroyed |
tax |
int|float |
0 |
Porcentaje to be used as tax (0 - 100) |
shipping.amount |
int|float |
0 |
Shipping cost |
shipping.free |
int|float |
0 |
Value after which shipping will be free. 0 to disable |
Parameter | Type | Default | Required | Description |
---|---|---|---|---|
$options |
array |
See Cart options | false |
Cart options |
$storage |
StorageInterface |
NativeSessionStorage |
false |
Storage driver |
Name | Description |
---|---|
add(Item $item, bool $append = true): void |
Add an item to the cart |
remove(string $id): bool |
Remove an item from the cart |
subtotal(): float |
Get subtotal |
shipping(): float |
Get shipping cost |
tax(): float |
Get tax |
total(): float |
Get total |
inCart(string $id): bool |
Check if an item is in the cart |
items(): array |
Return the items in the cart |
clear(): static |
Remove all items from the cart |
isEmpty(): bool |
Check if the cart is empty |
totalItems(): int |
Return the total (distinct) items in the cart |
save(): void |
Save items in the storage |
toArray(): array |
Return items as array |
Parameter | Type | Default | Required | Description |
---|---|---|---|---|
$id |
string |
N/A |
true |
Identifier |
$name |
string |
N/A |
true |
Name / description |
$price |
float |
N/A |
true |
Price (>= 0 ) |
$qty |
int |
1 |
false |
Quantity (> 0 ) |
$fields |
array |
[] |
false |
Extra fields |
$discount |
float |
0 |
false |
Discount (>= 0 ) |
Name | Description |
---|---|
add(int $qty): void |
Increase item's quantity by $qty |
update(int $qty): void |
Update item's quantity to $qty |
get(string $name, mixed $default = null): mixed |
Get $name property/field |
hasDiscount(): bool |
Check if has a discount |
price(): float |
Get item's price |
total(): float |
Get total |
toArray(): array |
Return item as array |
Refer to CONTRIBUTING for information.