bogdanmosiets2006 / shop-package-3laba
Abstract internet shop Laravel package
Package info
github.com/BogdanMosiets2006/shop-package-3laba
pkg:composer/bogdanmosiets2006/shop-package-3laba
v1.0.0
2026-05-31 11:06 UTC
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.0
- illuminate/database: ^10.0|^11.0|^12.0
- illuminate/http: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0
README
Laravel-пакет для абстрактного интернет-магазина.
Установка
composer require vendor/shop-package
Публикация ресурсов
# Конфигурация php artisan vendor:publish --tag=shop-config # Миграции php artisan vendor:publish --tag=shop-migrations php artisan migrate # Шаблоны страниц php artisan vendor:publish --tag=shop-views # Тесты php artisan vendor:publish --tag=shop-tests
Заполнение базы тестовыми данными
// database/seeders/DatabaseSeeder.php use Vendor\ShopPackage\Database\Seeders\ShopSeeder; public function run(): void { $this->call(ShopSeeder::class); }
php artisan db:seed
Настройка конфигурации
После публикации в config/shop.php:
// Префикс web-маршрутов (по умолчанию: 'shop') 'route_prefix' => 'shop', // Префикс API-маршрутов (по умолчанию: 'api/shop') 'api_prefix' => 'api/shop', // Требуемая версия API для middleware 'api_version' => 1, // Драйвер расчёта доставки: 'haversine' | 'nominatim' | 'openrouteservice' 'delivery' => [ 'driver' => 'haversine', ],
Использование фасадов
use Vendor\ShopPackage\Facades\CurrencyRate; use Vendor\ShopPackage\Facades\DeliveryCalculator; // Получить курс EUR к базовой валюте (USD) $rate = CurrencyRate::getRate('EUR'); // Конвертировать 100 USD в EUR $amount = CurrencyRate::convert(100, 'USD', 'EUR'); // Рассчитать доставку (Haversine — координаты "lat,lon") $delivery = DeliveryCalculator::calculate('55.7558,37.6173', '59.9343,30.3351'); // ['distance_km' => 634.5, 'cost' => 317.25, 'driver' => 'haversine'] // Принудительно через Nominatim (адреса в произвольном виде) $delivery = DeliveryCalculator::calculateByNominatim('Москва', 'Санкт-Петербург'); // Принудительно через OpenRouteService $delivery = DeliveryCalculator::calculateByOpenRouteService('Москва', 'Казань');
Middleware X-API-VERSION
Пакет регистрирует middleware Vendor\ShopPackage\Http\Middleware\CheckApiVersion.
Подключение в маршрутах приложения:
// Для всего маршрута — версия из конфига Route::get('/data', SomeController::class)->middleware(CheckApiVersion::class); // Версия задана явно для конкретного маршрута Route::get('/v2/data', SomeController::class)->middleware('check.api.version:2');
Регистрация алиаса в app/Http/Kernel.php:
protected $routeMiddleware = [ 'check.api.version' => \Vendor\ShopPackage\Http\Middleware\CheckApiVersion::class, ];
API
Все API-маршруты доступны по префиксу api/shop и требуют заголовок X-API-VERSION: 1.
| Метод | Маршрут | Описание |
|---|---|---|
| GET | /api/shop/products | Список товаров |
| POST | /api/shop/products | Создать товар |
| GET | /api/shop/products/{id} | Получить товар |
| PUT | /api/shop/products/{id} | Обновить товар |
| DELETE | /api/shop/products/{id} | Удалить товар |
Аналогично для: categories, suppliers, clients, warehouses, orders.
Запуск тестов
composer test # или ./vendor/bin/phpunit