midnightluke/php-units-of-measure-bundle
Symfony bundle integrating the php-units-of-measure library, providing unit definitions and services to work with quantities, conversions, and formatting in your app. Adds simple configuration and DI wiring for unit-of-measure support.
midnightluke/php-units-of-measure library, abstracting low-level unit conversions and validation. This reduces boilerplate but may limit customization for edge cases.symfony/flex). However, Laravel’s DI container may require minor adjustments (e.g., service provider configuration).meter, kilogram), but requires schema updates if not already normalized (e.g., storing units as strings or enums).UnitType for entities (e.g., Product::class with weight as UnitType). Feasible if using Eloquent or Doctrine ORM.collective/html) may need adapters.100cm if only meter is allowed).midnightluke/php-units-of-measure (v1.x) and Symfony components (e.g., form, validator). Laravel’s auto-wiring can mitigate some manual setup.UnitType may require downtime or complex backfills.Product).UnitType without loss of precision?Form::select)? If the latter, how will the bundle’s form types integrate?Rule::in()) that might conflict with the bundle’s validators?light-year for a niche app)?symfony/flex) makes adoption straightforward for most features.laravel-doctrine/orm). Eloquent users may need a wrapper or hybrid approach.collective/html) may not directly support the bundle’s form types. Options:
spatie/laravel-symfony-support).Phase 1: Setup and Validation
midnightluke/php-units-of-measure:
composer require midnightluke/php-units-of-measure-bundle
php artisan vendor:publish.160cm → 1.6m).Phase 2: Doctrine Integration
UnitType (e.g., #[ORM\Column(type: 'unit')]).// Before: $weight = '160cm';
// After: $weight = new Unit(1.6, 'meter');
Phase 3: Form and Validation
UnitType form widgets.UnitValidator).Phase 4: Testing and Rollout
midnightluke/php-units-of-measure v1.x).Product) before expanding to others.midnightluke/php-units-of-measure).composer.json until stability is confirmed.config/packages/midnightluke_units.yaml).UnitType may add slight overhead to queries (e.g., type casting). Benchmark with production-like data volumes.160cm → 1.6m) if performance is critical.UnitType) may require downtime or blue-green deployments.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Bundle version incompatibility | Broken unit conversions/validation | Pin versions; test upgrades in staging. |
| Database migration errors | Data corruption | Backup before migration; rollback plan. |
| Form type rendering issues | Broken UX | Fallback to plain text input with validation. |
| Custom unit unsupported | Invalid data accepted | Extend bundle or pre-validate inputs. |
| High query load from Doctrine types |
How can I help you explore Laravel packages today?