libphonenumber (a widely adopted library for phone number parsing/validation). Laravel can integrate it via:
symfony/ux-live-component or symfony/http-foundation as a dependency to bridge the bundle.libphonenumber: Directly integrate giggsey/libphonenumber-for-php (the underlying library) into Laravel’s service container.libphonenumber’s extended features).HttpFoundation) and manual DI configuration in Laravel.libphonenumber): Simpler but lacks Symfony-specific features (e.g., Twig integration, form types).libphonenumber’s requirements).// app/Providers/PhoneNumberServiceProvider.php
public function register()
{
$this->app->singleton(PhoneNumberValidator::class, function ($app) {
return new PhoneNumberValidator(); // Custom wrapper
});
}
libphonenumber directly.libphonenumber is resource-intensive for bulk operations (e.g., validating 10K numbers).HttpFoundation) for this feature?libphonenumber integration acceptable?libphonenumber: Best for minimalism. Use giggsey/libphonenumber-for-php (~10MB) with a custom service.| Component | Laravel Equivalent | Notes |
|---|---|---|
| Symfony Form Types | Laravel Form Request Validation | Manual mapping required. |
| Twig Filters | Blade Directives | Create custom Blade components. |
| Dependency Injection | Laravel Service Container | Bind PhoneNumberValidator manually. |
libphonenumber directly via Composer:
composer require giggsey/libphonenumber-for-php
// app/Services/PhoneNumberService.php
use libphonenumber\PhoneNumberUtil;
class PhoneNumberService {
public function parse(string $number, string $region): \libphonenumber\PhoneNumber {
$util = PhoneNumberUtil::getInstance();
return $util->parse($number, $region);
}
}
composer require odolbeau/phone-number-bundle symfony/http-foundation
config/app.php (if using Lumen/Symfony bridge).PhoneNumberService::isValid().Validate trait.libphonenumber’s test cases as reference).+1 (123) 456-7890, 0011234567890).phone_number column with constraints (e.g., VARCHAR(20)).libphonenumber parsing.Validate rules (custom rule or package like spatie/laravel-validation-rules-extended).{{ $number->format('INTERNATIONAL') }}).libphonenumber is battle-tested (used by Google, Facebook).libphonenumber updates).composer require with ^ for major versions to auto-update.libphonenumber’s release notes for breaking changes.libphonenumber’s PHP API docs.libphonenumber’s GitHub for PHP-specific questions.// app/Jobs/ValidatePhoneNumbers.php
public function handle() {
foreach ($this->numbers as $number) {
PhoneNumberService::parse($number); // May throw exceptions
}
}
$cacheKey = "phone:{$number}:{$region}";
$parsed = cache()->remember($cacheKey, now()->addHours(1), fn() =>
PhoneNumberService::parse($number, $region)
);
How can I help you explore Laravel packages today?