zend-blog-3-backend

Форк
0
83 строки · 1.4 Кб
1
<?php
2

3
namespace App\Service\IpInfo;
4

5
class LocationInfo
6
{
7
    /**
8
     * @var string[]
9
     */
10
    private static array $properties = [
11
        'countryCode',
12
        'countryName',
13
        'regionName',
14
        'cityName',
15
        'zipCode',
16
        'latitude',
17
        'longitude',
18
        'timeZone',
19
    ];
20

21
    /**
22
     * @var string
23
     */
24
    public string $countryCode;
25

26
    /**
27
     * @var string
28
     */
29
    public string $countryName;
30

31
    /**
32
     * @var string
33
     */
34
    public string $cityName;
35

36
    /**
37
     * @var string
38
     */
39
    public string $regionName;
40

41
    /**
42
     * @var string|null
43
     */
44
    public $latitude;
45

46
    /**
47
     * @var string|null
48
     */
49
    public $longitude;
50

51
    /**
52
     * @var string|null
53
     */
54
    public $timeZone;
55

56
    /**
57
     * @var string|null
58
     */
59
    public $zipCode;
60

61
    /**
62
     * @param array $data
63
     *
64
     * @return LocationInfo
65
     */
66
    public static function createFromArray(array $data): LocationInfo
67
    {
68
        if (!array_key_exists('countryCode', $data)
69
            || !array_key_exists('countryName', $data)
70
            || !array_key_exists('regionName', $data)
71
            || !array_key_exists('cityName', $data)
72
        ) {
73
            throw new \LogicException('Missing required properties');
74
        }
75

76
        $self = new self();
77
        foreach (static::$properties as $property) {
78
            $self->$property = $data[$property] ?? null;
79
        }
80

81
        return $self;
82
    }
83
}
84

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.