-
-
Notifications
You must be signed in to change notification settings - Fork 23
/
PhoneNumber.php
67 lines (50 loc) · 1.32 KB
/
PhoneNumber.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
namespace Notion\Pages\Properties;
/**
* @psalm-type PhoneNumberJson = array{
* id: string,
* type: "phone_number",
* phone_number: string,
* }
*/
class PhoneNumber implements PropertyInterface
{
private const TYPE = Property::TYPE_PHONE_NUMBER;
private Property $property;
private string $phone;
private function __construct(Property $property, string $phone)
{
$this->property = $property;
$this->phone = $phone;
}
public static function create(string $phone): self
{
$property = Property::create("", self::TYPE);
return new self($property, $phone);
}
public static function fromArray(array $array): self
{
/** @psalm-var PhoneNumberJson $array */
$property = Property::fromArray($array);
$phone = $array[self::TYPE];
return new self($property, $phone);
}
public function toArray(): array
{
$array = $this->property->toArray();
$array[self::TYPE] = $this->phone;
return $array;
}
public function property(): Property
{
return $this->property;
}
public function phone(): string
{
return $this->phone;
}
public function withPhone(string $phone): self
{
return new self($this->property, $phone);
}
}