baks-dev/reference-measurement
Length, Weight, Volume).Product with weight_in_kg and weight_in_lbs via the package).height is in cm or inches).temperature > 100°C, trigger alert").Measurement\Length::fromCentimeters(100)), it can be injected into Laravel services via constructor injection or facades (if designed for simplicity).| Risk Area | Assessment | Mitigation Strategy |
|---|---|---|
| Package Maturity | No stars, last release in 2026 (future date suggests hypothetical). | Evaluate code quality (tests, docs, examples) before adoption. |
| Backward Compatibility | PHP 8.4+ only; may break if Laravel downgrades. | Pin version in composer.json (e.g., ^7.4.3). Monitor Laravel’s PHP policy. |
| Documentation | README is minimal (Russian + English). | Request API docs or usage examples from maintainers. |
| Performance | Unknown overhead for unit conversions. | Benchmark in staging; cache frequent conversions (e.g., Redis). |
| Localization | Units may need i18n support (e.g., "meter" vs. "metre"). | Extend package or wrap in a Laravel Localization middleware. |
nautical_miles, acre-feet).1 mile = 1.60934 km—is this hardcoded or configurable?).Cache::remember for conversion rates).Measurement::rule() for Form Requests)?class Product extends Model {
protected $casts = [
'weight' => Measurement\Weight::class, // Custom cast
];
}
class ShippingCalculator {
public function __construct(private MeasurementConverter $converter) {}
public function calculateCost(float $weightKg): float {
$weightLbs = $this->converter->convert($weightKg, 'kg', 'lbs');
// ... logic
}
}
public function toArray($request) {
return [
'weight' => $this->resource->weight->to('lbs'),
];
}
Phase 1: Proof of Concept (PoC)
composer require baks-dev/reference-measurement.Phase 2: Core Integration
Measurement value objects.MeasurementFacade).Phase 3: Full Adoption
unit columns if needed (e.g., products.weight_unit).spatie/array-to-object if overlapping).| Step | Task | Dependencies |
|---|---|---|
| 1 | Install & test package in isolation. | None |
| 2 | Create a MeasurementService wrapper. |
Package working |
| 3 | Update 1-2 Eloquent models. | Service wrapper |
| 4 | Add unit conversion to API responses. | Model updates |
| 5 | Implement caching for conversions. | High-traffic endpoints |
| 6 | Deprecate old unit formats. | Full adoption |
temperature units).$converter->convert($value, 'kg', 'lbs', debug: true);
7.4.3 and avoid updates.league/unit-of-measure if this package lacks features.kg→lbs) in Redis.weight_value + weight_unit).| Scenario | Impact | Mitigation |
|---|---|---|
| Package breaks with Laravel upgrade | App crashes on composer update. |
Pin version in composer.json. |
| Missing critical units | Business logic fails (e.g., no Fahrenheit). |
Extend package or fork. |
| Caching issues | Stale conversion rates. | Use Cache::tags('measurements') for invalidation. |
| Race conditions | Concurrent unit conversions corrupt data. | Use immutable value objects. |
*_unit columns must use Measurement\*").Measurement::validate($value, 'm')).How can I help you explore Laravel packages today?