frost/distance
PHP distance conversion library for US and metric units. Convert between mi, ft, in, km, m, cm, and mm (US↔metric, US↔US, metric↔metric). Simple fluent API: setUnit(), setDistance(), convertTo().
frost/distance package is a pure utility library with no dependencies (beyond PHP core), making it a low-overhead addition to any Laravel application. It fits best in:
geocoder/geocoder for location-aware use cases.Request::validate() + Distance conversion).km → mi for US-facing apps).m for internal systems).Distance class for isolation.| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Undocumented Behavior | Medium | Write integration tests for edge cases (e.g., invalid units, zero distances). |
| No Type Safety | Low | Use PHP 8.0+ return types or Laravel’s illuminate/contracts for stricter typing. |
| Performance | Low | Benchmark if used in high-throughput loops (e.g., batch processing). |
| Unit Consistency | Medium | Enforce a single source of truth for units (e.g., config file or database). |
km but display as mi)?'lightyears') be handled? (Current implementation throws exceptions.)$distance * 0.621371 for km→mi)?FormRequest validation (e.g., Rule::required() + custom conversion logic).public function getDistanceInMilesAttribute(): float {
return (new Distance())
->setUnit('km')
->setDistance($this->distance_km)
->convertTo('mi');
}
0, negative values, invalid units).$converter = new \Frost\Distance();
// app/Providers/AppServiceProvider.php
public function register() {
$this->app->singleton(DistanceConverter::class, function ($app) {
return new \Frost\Distance();
});
}
// app/Console/Commands/ConvertDistances.php
public function handle() {
Distance::chunk(100, function ($distances) {
foreach ($distances as $distance) {
$distance->standardized_distance = (new Distance())
->setUnit($distance->original_unit)
->setDistance($distance->distance)
->convertTo('km');
$distance->save();
}
});
}
km").try-catch around convertTo()).'meters' vs 'm').0.621371 * 10 ≠ 6.21371 due to IEEE 754).null).| Scenario | Impact | Mitigation |
|---|---|---|
| Invalid unit input | Runtime exception | Validate units before conversion. |
| Floating-point errors | Inaccurate results | Round results (e.g., round($result, 2)). |
| Package abandonment | No updates | Fork or replace with arithmetic. |
| Unit inconsistency | Data corruption | Enforce standards via migrations. |
km, display mi").How can I help you explore Laravel packages today?