World::countries()) and RESTful API routes (/api/countries), aligning with Laravel’s modularity and decoupling principles.allowed_countries/disallowed_countries in config, useful for region-specific deployments (e.g., EU-only compliance).sub_region → subregion rename).countries/states tables if not namespaced (configurable via world.php).subregion rename) could require manual data migration.Route::bind, Artisan commands). May require polyfills for non-Laravel PHP apps.users.address, products.shipping_zones) to identify overlaps/conflicts.composer require tocaan/world
php artisan vendor:publish --tag=world --force
// Facade example
$countries = World::countries()->where('name', 'like', 'France%')->get();
// API example
$response = Http::get('/api/countries?search=US');
php artisan migrate --path=/vendor/tocaan/world/database/migrations
php artisan db:seed --class=WorldSeeder
countries tables).WorldSeeder class to add app-specific fields (e.g., is_active, created_at).config/world.php or service provider binding.vendor:publish usage). May need adjustments for Laravel 9/10 (e.g., route model binding syntax).countries, states, etc.) may collide. Use config['tables'] to namespace:
'tables' => [
'countries' => 'app_countries',
],
/api/countries, /api/states) may clash with app routes. Use middleware or route prefixes:
Route::prefix('geo')->group(function () {
Route::get('/countries', [WorldController::class, 'countries']);
});
ALTER TABLE countries ADD INDEX idx_name (name);
world.php.How can I help you explore Laravel packages today?