Этот пакет предоставляет библиотеку PHP, которая определяет страну IP -адреса.
Вы можете легко установить геолокацию PHP с помощью композитора.
composer require divineomega/php-geolocation
Самое простое использование PHP Geolocation - создать новый объект локатора и вызов его метода 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...
}
*/ Вы можете настроить PHP Geolocation для использования любой библиотеки кэширования PSR-6. Это легко сделать с помощью метода setCache .
Следующий пример настраивает кэш файла (предоставленным пакетом 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 ' ); По умолчанию PHP Geolocation попытается использовать нативную команду whois операционной системы для определения IP -адреса. Если вы хотите использовать альтернативный поставщик местоположения. Это можно сделать с помощью метода setLocationProvider , следующим образом.
$ locator = new Locator ;
$ locator -> setLocationProvider ( new IpStack ( ' my_ip_stack_api_key ' );
$ country = $ locator -> getCountryByIP ( ' 93.184.216.34 ' );Чтобы получить бесплатный ключ API, зарегистрируйтесь на веб -сайте IP Stack.
Если вы хотите разработать свой собственный поставщик местоположения, просто создайте новый класс, который реализует LocationProviderInterface представленную в этом пакете. Посмотрите на существующие классы поставщика местоположения WhoIs и FreeGeoIP , если вам нужна помощь в создании собственного поставщика местоположения.