smart / geo
Smart Geo is databases from Open Data providers compiled into easy to use PHP objects.
Requires
- php: >=5.6.0
- league/geotools: >=0.6
- psr/log: >=1
- symfony/console: >=2.7
Requires (Dev)
- phpunit/phpunit: ~5
README
Smart Geo
Smart Geo is databases from Open Data providers compiled into easy to use PHP objects.
Features
- Multiple languages (Currently only supports English, French and German).
- Country Database
- Region Database (Currently only for Canada and the United States).
- IP Geolocation (With MaxMind)
Sources
Requirements
Smart Geo does not require a database, but instead, uses JSON files.
This library uses PHP 5.6+.
Installation
You need to install the Smart Geo library through composer. To do so, add the following lines to your composer.json file.
{ "require": { "smart/geo": "dev-master" } }
To download or update the current data, use the following command.
php vendor/bin/geo data:update
Country
Database of all countries in the world.
Properties
- Names
- Short Code (Alpha-2 code)
- Code (Alpha-3 code)
- Latitude
- Longitude
- Bounding Box
- Currency
- Continent
- Population
- Area
- Capital
- Timezone
Examples
Get a list of all countries.
$countryCollection = (new Geo)->getCountryRepository()->findAll();
Get country name in english.
foreach ($countryCollection as $country) { echo $country->getNames()->get('en'); }
Order by country name in english.
$countryCollection->orderByName();
Region
Database of all States, Federal Districts and Territories in the United States, Provinces and Territories in Canada.
Properties
- Name
- Code (Alpha-2 code)
- Country
- Type
- Latitude
- Longitude
- Bounding Box
Examples
Get a list of all regions in the US.
$geo = new Geo; $country = $geo->getCountryRepository()->findByCode('US'); $regionCollection = (new Geo)->getRegionRepository()->findByCountry($country);
Get region name and type in english.
foreach ($regionCollection as $region) { echo $region->getNames()->get('en') . " is a " . $region->getType()::class . " of the " . $country->getNames()->get('en); }