Ce package fournit une bibliothèque PHP qui détermine le pays d'une adresse IP.
Vous pouvez facilement installer PHP Geolocation avec Composer.
composer require divineomega/php-geolocation
L'utilisation la plus simple de la géolocalisation PHP est de créer un nouvel objet de localisation et d'appeler sa méthode getCountryByIP .
// Get country of the current request's IP address
$ country = ( new Locator )-> getCountryByIP ( $ _SERVER [ ' REMOTE_ADDR ' ]);
// Get country of a specific IP address
$ country = ( new Locator )-> getCountryByIP ( ' 93.184.216.34 ' );
// Returns a Country object
/*
object(DivineOmegaCountriesCountry)#4693 (16) {
["name"]=>
string(13) "United States"
["officialName"]=>
string(24) "United States of America"
// etc...
}
*/ Vous pouvez configurer PHP Geolocation pour utiliser n'importe quelle bibliothèque de mise en cache conforme PSR-6. Cela se fait facilement à l'aide de la méthode setCache .
L'exemple suivant configure un cache de fichier (fourni par le package cache/filesystem-adapter ).
use League Flysystem Adapter Local ;
use League Flysystem Filesystem ;
use Cache Adapter Filesystem FilesystemCachePool ;
$ filesystemAdapter = new Local ( __DIR__ . ' / ' );
$ filesystem = new Filesystem ( $ filesystemAdapter );
$ cachePool = new FilesystemCachePool ( $ filesystem );
$ locator = new Locator ;
$ locator -> setCache ( $ cachePool );
$ country = $ locator -> getCountryByIP ( ' 93.184.216.34 ' ); Par défaut, PHP Geolocation essaiera d'utiliser la commande whois native du système d'exploitation pour déterminer l'adresse IP. Si vous le souhaitez, vous pouvez utiliser un autre fournisseur de localisation. Cela peut être fait en utilisant la méthode setLocationProvider , comme suit.
$ locator = new Locator ;
$ locator -> setLocationProvider ( new IpStack ( ' my_ip_stack_api_key ' );
$ country = $ locator -> getCountryByIP ( ' 93.184.216.34 ' );Pour obtenir une clé API gratuite, inscrivez-vous sur le site Web de IP Stack.
Si vous souhaitez développer votre propre fournisseur de localisation, créez simplement une nouvelle classe qui implémente la LocationProviderInterface fournie dans ce package. Voir les classes de fournisseurs d'emplacement WhoIs et FreeGeoIP existantes si vous avez besoin d'aide pour créer votre propre fournisseur de localisation.