zend-blog-3-backend
46 строк · 1.2 Кб
1<?php
2
3namespace Mtt\TestBundle\Service\IpInfo;4
5use App\Service\IpInfo\IpInfoClientInterface;6use App\Service\IpInfo\LocationInfo;7use Faker\Factory as FakerFactory;8use Symfony\Component\Intl\Intl;9
10class IpInfoDummyClient implements IpInfoClientInterface11{
12/**13* @param string $ip
14*
15* @return LocationInfo|null
16*/
17public function getLocationInfo(string $ip): ?LocationInfo18{19if (!filter_var($ip, FILTER_VALIDATE_IP)) {20return null;21}22
23$faker = FakerFactory::create();24$faker->seed(ip2long($ip));25
26$countries = Intl::getRegionBundle()->getCountryNames('en_US');27do {28$countryCode = null;29$country = $faker->country;30foreach ($countries as $key => $value) {31if ($country == $value) {32$countryCode = $key;33break;34}35}36} while (is_null($countryCode));37
38return LocationInfo::createFromArray([39'countryCode' => $countryCode,40'countryName' => $country,41'regionName' => $faker->state,42'cityName' => $faker->city,43'zipCode' => $faker->postcode,44]);45}46}
47