tourze/deliver-order-bundle
A Symfony/PHP bundle from the Tourze ecosystem that packages delivery-order domain logic—entities, services and workflow wiring for managing shipping and fulfillment orders—so you can add delivery-order handling to your application without rebuilding the plumbing yourself.
This is the first tagged release (0.0.1) of tourze/deliver-order-bundle, and the release notes contain nothing beyond a changelog link — so treat the source as the only documentation.
Minimal steps:
composer require tourze/deliver-order-bundle
Then read vendor/tourze/deliver-order-bundle/composer.json before writing any code. Look at require to see whether this pulls in symfony/framework-bundle, symfony/dependency-injection, doctrine/orm, or similar. The -bundle suffix strongly suggests Symfony bundle conventions rather than Laravel conventions.README.md (if present) — likely thin or absent at 0.0.1.src/*Bundle.php — the bundle class will tell you whether it implements Bundle from Symfony or has a Laravel-style service provider.src/DependencyInjection/ — *Extension.php and Configuration.php reveal the entire config surface; this is the single most useful directory in any bundle.src/Entity/ or src/Model/ — tells you whether it is Doctrine-based, Eloquent-based, or plain PHP.Resources/config/ — service wiring and any default container parameters.ServiceProvider, and map its entities to Eloquent models or expose them as read models. Do not assume php artisan vendor:publish exists.php artisan about or a trivial app()->make(SomeService::class) smoke test tells you more about viability than reading 20 files. Only after that attempt the real workflow — recording a delivery/fulfilment against an order and reading it back.Because this is 0.0.x, pin an exact version in composer.json ("tourze/deliver-order-bundle": "0.0.1") and commit the lock file. There is no stability promise here.
Treat it as a domain package, not a CRUD package. A "deliver order" bundle will most plausibly center on a delivery/fulfilment record tied to an order and a state (pending → shipped → delivered, or similar). The useful way to consume it is to wrap it behind your own application service rather than letting controllers touch its classes directly — this keeps a future 0.1.x/1.0 upgrade contained to one class.
Adapter/provider pattern for Laravel. Put the integration in a single dedicated provider:
// app/Providers/DeliverOrderServiceProvider.php
public function register(): void
{
$this->app->singleton(DeliveryManager::class, fn ($app) => new DeliveryManager(
$app->make(/* bundle service or repository */),
));
}
Bind the bundle's concrete classes to your own interfaces so application code depends on your contracts, not the vendor's.
State transitions as events. If the bundle exposes transitions, publish domain events from your wrapper (OrderMarkedDelivered) and subscribe Laravel listeners. This is also your escape hatch if the bundle's event naming changes — your listeners stay stable.
Configuration discipline. Any bundle Configuration.php should be mirrored into config/deliver-order.php and read from config() in your wrapper. Never read env() directly in application code; keep the bundle's tunables in one config file so a config-tree change on upgrade is a one-file edit.
Testing pattern. Because the package may be Doctrine-oriented while your app is Eloquent, write a thin repository adapter and test against that interface with an in-memory/fake implementation. Integration-test against a real database only in one or two tests; otherwise every upgrade breaks a large test suite for reasons unrelated to your code.
Workflow fit. Best suited to a bounded context: delivery/fulfilment tracking attached to an existing order aggregate you already own. Avoid letting it become the system of record for orders — keep your order model authoritative and let this package describe delivery of it.
tourze/*-bundle packages are Symfony-oriented. In Laravel you will typically need symfony/* components available and a hand-written bridge. Verify that the bundle does not require a full Symfony kernel; if it does, budget real time for the bridge or reconsider.0.0.1 means no compatibility contract. Semver below 1.0.0 permits breaking changes in the minor position, and at 0.0.x even patches may break. Pin exactly and re-read the diff before bumping.src/ and treat that as the API list.Doctrine\ORM\Mapping imports — their presence is the tell.Configuration.php when that happens.php artisan tinker → inspect the container, or Symfony's debug:container) and grep Resources/config/ for the service id. Most wiring questions are answered there.0.0.x dependency and a sparse changelog, your local patches are guaranteed to conflict. Wrap, don't fork; if you must fork, vendor it into your own namespace immediately.0.1.0 or publishes a real README/changelog — that is the point at which its API and framework assumptions become knowable.How can I help you explore Laravel packages today?