jelte-ten-holt/in-other-shops
Composer 安装命令:
composer require jelte-ten-holt/in-other-shops
包简介
Modular e-commerce domain packages for Laravel
README 文档
README
Modular e-commerce domain packages for Laravel 12+.
Installation
composer require jelte-ten-holt/in-other-shops
Service providers are auto-discovered via Laravel's package discovery.
Domains
Each domain under src/ has its own service provider, migrations, config, contracts, and concerns. This is a modular monolith — one package with clean internal domain boundaries — not a staging ground for per-domain packages. See CLAUDE.md for the four-tier structure (generic leaves / middle band / shop core / integration) and the extraction policy.
Grouped by tier (see CLAUDE.md for what the tiers mean).
| Tier | Domain | Purpose | Dependencies |
|---|---|---|---|
| Leaf | Currency | Currency enum, formatting, config | — |
| Leaf | Translation | Polymorphic translations table, locale management | — |
| Leaf | Location | Address management (polymorphic) | — |
| Leaf | Media | File attachments via morphToMany pivot | — |
| Leaf | Logging | Domain event logging with pluggable handlers | — |
| Leaf | FlowChain | Orchestrated multi-step business processes | — |
| Leaf | Support | Shared kernel: base service provider, Filament bases, state transitions | Currency |
| Middle | Pricing | Prices, price lists, vouchers | Currency |
| Middle | Taxonomy | Categories (hierarchical) and tags (flat, typed) | Translation, Media |
| Middle | Payment | Gateway-agnostic payments, refunds, webhooks | Currency |
| Middle | Tax | VAT rates and calculation | Location |
| Middle | Inventory | Stock tracking, reservations, audit ledger | (Translation — drift) |
| Shop core | Commerce | Cart, Order, Customer lifecycle | Currency, Location, Payment, Pricing, Shipping, Tax, FlowChain, Inventory |
| Shop core | Shipping | Shipment model, shipping cost calculation | Currency, Location, Commerce (cycle — accepted) |
| Shop core | Purchasing | Inbound inventory / purchase orders | Inventory, Tax |
| Integration | Storefront | Read-only API layer for browsable catalog | Currency, Inventory, Media, Pricing, Taxonomy, Translation |
| Integration | Variants | Product options/values and purchasable variants | Commerce, Inventory, Media, Pricing, Translation |
| Integration | Agent | MCP Streamable HTTP endpoint (bearer or OAuth 2.1 + DCR) | Commerce, Inventory, Storefront, Taxonomy |
| Planned | Navigation | Configurable menus | — |
Usage
Project models opt into domain capabilities by implementing contracts and using traits:
use InOtherShops\Pricing\Contracts\HasPrices; use InOtherShops\Pricing\Concerns\InteractsWithPrices; use InOtherShops\Media\Contracts\HasMedia; use InOtherShops\Media\Concerns\InteractsWithMedia; class Product extends Model implements HasPrices, HasMedia { use InteractsWithPrices; use InteractsWithMedia; }
Each domain ships config with a models key for overriding model classes via the registry pattern. Publish config to customize:
// config/pricing.php return [ 'models' => [ 'price' => App\Models\CustomPrice::class, ], ];
Extraction Policy
This package is a modular monolith, not a set of packages-in-waiting. Extraction is on-demand and leaf-only: split a generic leaf (Currency, Logging, Media, Translation, Location, FlowChain, Support) into its own lower-level Composer package only when a concrete non-shop consumer needs it without the rest of the shop. The middle band, shop core, and integration tier are not extraction targets — the shop core (Commerce/Shipping/Purchasing) moves as one unit if it ever moves at all.
Don't split speculatively. The migrations-run-in-every-consumer cost that used to motivate splitting is handled by the per-domain {domain}.migrations.enabled config gate, not by extraction.
If a leaf extraction ever happens: move the directory to its own repo, give it a composer.json with the InOtherShops\{Domain}\ PSR-4 namespace and its (leaf-only) dependencies as require entries, and depend on the new package here. Note that Logging is consumed by nearly every domain, so it would need to publish first.
License
MIT
jelte-ten-holt/in-other-shops 适用场景与选型建议
jelte-ten-holt/in-other-shops 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 235 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 04 月 23 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「shop」 「ecommerce」 「cart」 「laravel」 「modular」 「commerce」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 jelte-ten-holt/in-other-shops 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 jelte-ten-holt/in-other-shops 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 jelte-ten-holt/in-other-shops 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Nevogate Payment Gateway SDK
Laravel 11 and above Shopping cart
Admin Hub for GetCandy. A modern headless e-commerce solution for Laravel PHP framework.
Dealing with payments through the Egyptian payment gateway PayMob
Submodule for SilverShop which allows you to compare products in a table.
Product catalog for your Symfony2 applications.
统计信息
- 总下载量: 235
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 27
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-04-23