Pros:
Countries::all(), Countries::findByCode('US')) simplifies integration into existing Laravel services (e.g., validation, localization, or geospatial logic).Cons:
config:publish → vendor:publish).ServiceProvider boot methods, add tests).league/iso3166 (PHP-only) or API-based solutions.User::country_id foreign keys).react-select-country) or APIs.// config/app.php (Laravel 8+)
'providers' => [
Webpatser\Countries\CountriesServiceProvider::class,
],
config:publish with:
php artisan vendor:publish --provider="Webpatser\Countries\CountriesServiceProvider"
test('returns US capital')->assertEquals('Washington, D.C.', Countries::findByCode('US')->capital);
// Before
$countries = ['US' => 'United States', 'CA' => 'Canada'];
// After
$countries = collect(Countries::all())->pluck('name', 'iso_3166_1_alpha_2');
countries table via migration or seeder:
use Webpatser\Countries\Countries;
public function run()
{
DB::table('countries')->insert(Countries::all());
}
Illuminate\Support\Facades\Config for dynamic config access.strict_types=1.countries table.countries table).php artisan countries:refresh").Countries::all() calls in Sentry/New Relic to detect usage patterns.Countries::findByCode('ZZ') should return null).$countries = Cache::remember('countries.all', now()->addYears(1), fn() => Countries::all());
| Failure | Impact | Mitigation |
|---|---|---|
| Database connection loss | Countries::all() fails silently. |
Add retry logic with try-catch. |
| Corrupted migration | Missing countries table. | Rollback and re-run countries:migration. |
| ISO data mismatch | Invalid codes in production. | Validate against ISO before deployment. |
| Laravel upgrade | Package breaks. | Test in staging; fork if needed. |
Countries::findByName('Canada')).null inputs, non-ISO codes).How can I help you explore Laravel packages today?