zend-blog-3-backend
83 строки · 1.4 Кб
1<?php
2
3namespace App\Service\IpInfo;
4
5class LocationInfo
6{
7/**
8* @var string[]
9*/
10private 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*/
24public string $countryCode;
25
26/**
27* @var string
28*/
29public string $countryName;
30
31/**
32* @var string
33*/
34public string $cityName;
35
36/**
37* @var string
38*/
39public string $regionName;
40
41/**
42* @var string|null
43*/
44public $latitude;
45
46/**
47* @var string|null
48*/
49public $longitude;
50
51/**
52* @var string|null
53*/
54public $timeZone;
55
56/**
57* @var string|null
58*/
59public $zipCode;
60
61/**
62* @param array $data
63*
64* @return LocationInfo
65*/
66public static function createFromArray(array $data): LocationInfo
67{
68if (!array_key_exists('countryCode', $data)
69|| !array_key_exists('countryName', $data)
70|| !array_key_exists('regionName', $data)
71|| !array_key_exists('cityName', $data)
72) {
73throw new \LogicException('Missing required properties');
74}
75
76$self = new self();
77foreach (static::$properties as $property) {
78$self->$property = $data[$property] ?? null;
79}
80
81return $self;
82}
83}
84