PHPackages                             agoalofalife/cart - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. agoalofalife/cart

ActiveLibrary

agoalofalife/cart
=================

v0.1.0(8y ago)18MITPHPPHP &gt;=7.1

Since Aug 1Pushed 8y ago1 watchersCompare

[ Source](https://github.com/agoalofalife/cart)[ Packagist](https://packagist.org/packages/agoalofalife/cart)[ RSS](/packages/agoalofalife-cart/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (12)Versions (2)Used By (0)

### Cart

[](#cart)

[![Scrutinizer Code Quality](https://camo.githubusercontent.com/f4bb4d9ae44035128515aec6bd48ec8f9e7f9c0c8c228703e0813a2b3254d37d/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61676f616c6f66616c6966652f636172742f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/agoalofalife/cart/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/191814860d0dfe95226fe51b6beb3735d47b6af6b1cf99a7171c52798598ebd8/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61676f616c6f66616c6966652f636172742f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/agoalofalife/cart/?branch=master)[![License](https://camo.githubusercontent.com/7e59ea5460a6a9b097eac71b48e436373c32561645b86fdcbdb60230c9163813/68747470733a2f2f706f7365722e707567782e6f72672f61676f616c6f66616c6966652f636172742f6c6963656e7365)](https://packagist.org/packages/agoalofalife/cart)[![Build Status](https://camo.githubusercontent.com/ab37ad6c0fe7cf30312b7847313062abbe82ea0a830167e9e8afee360c405cee/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61676f616c6f66616c6966652f636172742f6261646765732f6275696c642e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/agoalofalife/cart/build-status/master)

**Что это такое?**

Это простой пакет для хранение товаров в корзине магазина. Он не навязывает свою структуру и вы всегда сможете поменять тип хранения, давай рассмотрим его уже!

- [Требования](#Required)
- [Установка](#Installation)
- [Установка конфигураций](#Configuration)
- [Драйвера](#Drivers)
    - [Использование](#Use)
- [Написание своего драйвера](#CustomDriver)
- [Интеграция с Laravel](#Laravel)
- [Простое использование](#Guide)

```
Обратите внимание, что для использования необходимо иметь :
- Mysql не ниже версии 5.7.8 (Если вы используете драйвер по-умолчанию)
- Версия PHP не ниже 7.1

```

**Установка**

Достаточно выполнить

```
composer require agoalofalife/cart

```

**Установка конфигураций**

В начале было слово...

Каждый раз когда вы создаете класс для корзины, он может иметь свой способ хранения информации (Драйвера).

Например , драйвер базы данных имеет настройки подключения, название таблицы и тому подобное. Давайте рассмотрим как мы можем загрузить конфигурации:

```
$kernel = new \Cart\Kernel();
$kernel->bootstrapping();
$kernel->loadConfiguration(new \Cart\SourcesConfigurations\File(__DIR__ . '/config/cart.php'));

```

Метод `loadConfiguration` принимает обьект типа `SourceConfiguration`, вы можете использовать класс `File` по умолчанию передав в конструктор путь до файла, или написать свой класс , реализующий `SourceConfiguration`.

```
   // Сервис - провайдеры для настройки ваших драйверов
    'services' => [
        Cart\ServiceProviders\DatabaseServiceProviders::class,
        \Cart\ServiceProviders\RedisServiceProvider::class,
    ],
    'drivers' => [
    // конфигурации в зависимости от драйвера
        'database' => [
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'test',
            'username'  => 'test',
            'password'  => 'test',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => ''
        ],
        'redis' => [
            'prefix' => 'cart',
            'scheme' => 'tcp',
            'host'   => '127.0.0.1',
            'port'   => 6379,
        ]
    ],
    // выбранный текущий драйвер
    'storage' => \Cart\Drivers\DatabaseDriver::class

```

Сверху показан пример структуры конфигурации. `storage` и `services` являются обязательными полями, `drivers` зависит от настройки вашего драйвера. На данном этапе вы можете скопировать этот пример и внести свои настройки.

**Драйвера**

На данный момент поддерживается два типа драйвера : Redis и база данных.

**Использование**

Какой драйвер вы будете использовать зависит от настройки в файле конфигурации:

```
    'storage' => \Cart\Drivers\DatabaseDriver::class

```

Теперь клиентский код:

```
$kernel = new \Cart\Kernel();
$kernel->bootstrapping();
$kernel->loadConfiguration((new \Cart\SourcesConfigurations\File(__DIR__ . '/config/cart.php')));
$kernel->loadServiceProvider();
// получение драйвера
$storage = $kernel->getStorage();

```

После того как драйвер получен мы можем добавлять товар в корзину, удалять его, менять кол -во и очищать корзину полностью.

```
// Добавление товара в корзину
// id и user_id обязательные поля, так как это индексы по которым происходят другие операции
// вы в праве добавить больше данных..
$storage->add(['id' => 3, 'user_id' => 1]);

// очистить корзину передав user_id
$storage->clear(1);

// изменить кол -во
$storage->change(['id' => 5, 'user_id' => 1, 'count' => 0])

// удалить конкретный товар из корзины
$storage->remove(['id' => 2, 'user_id' => 1]);

// Получить список всех товаров по user_id
$storage->get(1);

```

Помимо этого так же есть возможность изменить цену товара (Например скидка).

```
// Поле price обязательно.
// Сделать фиксированную скидку
$storage->discount(new \Cart\DiscountStrategy\FixDiscountStrategy(100), ['id' => 3, 'user_id' => 1, 'price' => 200]);

// Осуществить скидку по проценту
$storage->discount(new \Cart\DiscountStrategy\PercentageStrategy(20), ['id' => 3, 'user_id' => 1, 'price' => 200]);

```

По желанию вы можете дополнить свою стратегию изменения цены, реализовав интерфейс `DiscountContract`.

**Написание своего драйвера**

Написать драйвер в три простых шага :

- По примеру создать свой `ServiceProvider` для начальных конфигураций и дописать его в файле конфигурации.

```
    'services' => [
        Cart\ServiceProviders\DatabaseServiceProviders::class,
        \Cart\ServiceProviders\RedisServiceProvider::class,
        ...
    ]

```

- Реализовать интерфейс `CartDriverContract` и для скидки `DiscountDriverContract`
- Вставить дравер в файл конфигурации :

```
  'storage' => \Cart\Drivers\DatabaseDriver::class

```

**Интеграция с Laravel**

Для того чтобы интегрировать библиотеку в Laravel необходимо :

- Установить через composer
- Выполнить команду :

```
./vendor/bin/cart migrate:laravel

```

Тем самым скопировать файл конфигурации и миграцию в исходные папки Laravel

- Получить driver из контейнера и работать с ним (Предварительно установив все настройки и выполнив миграцию , если используется драйвер базы данных.)

```
app('cart')-> ...

```

**Простое использование**

- Установить пакет

`composer require agoalofalife/cart`

- Установить свои настройки базы данных

```
  'drivers' => [
        'database' => [
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'test',
            'username'  => 'test',
            'password'  => 'test',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => ''
        ]

```

- Выполнить команду для создание таблицы `./vendor/bin/cart cart:migrate`
- Начать использовать драйвер базы данных.

```
$kernel = new \Cart\Kernel();
$kernel->bootstrapping();
$kernel->loadConfiguration((new \Cart\SourcesConfigurations\File(__DIR__ . '/cart.php')));
$kernel->loadServiceProvider();
$storage = $kernel->getStorage();

```

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3205d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/de0b1f6d64571d925fd7580acf7f99394511ad98c4befd6d2d9e1ef64ea1ea8e?d=identicon)[agoalofalife](/maintainers/agoalofalife)

---

Top Contributors

[![agoalofalife](https://avatars.githubusercontent.com/u/15719824?v=4)](https://github.com/agoalofalife "agoalofalife (88 commits)")

---

Tags

cartphpshop-cartcart

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/agoalofalife-cart/health.svg)

```
[![Health](https://phpackages.com/badges/agoalofalife-cart/health.svg)](https://phpackages.com/packages/agoalofalife-cart)
```

###  Alternatives

[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k12.1M99](/packages/laravel-pulse)[psalm/plugin-laravel

Psalm plugin for Laravel

3274.9M308](/packages/psalm-plugin-laravel)[laravel/passport

Laravel Passport provides OAuth2 server support to Laravel.

3.4k85.0M532](/packages/laravel-passport)[laravel-zero/framework

The Laravel Zero Framework.

3371.4M369](/packages/laravel-zero-framework)[mongodb/laravel-mongodb

A MongoDB based Eloquent model and Query builder for Laravel

7.1k7.2M71](/packages/mongodb-laravel-mongodb)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
