Skip to content

Commit 229d8d3

Browse files
committed
Merge branch 'YP-1493__details_dynnamics_fields' into 'main'
YP 1493 details dynamic fields See merge request ypmn-public/php-api-client!13
2 parents 13db51a + b2890bd commit 229d8d3

1 file changed

Lines changed: 64 additions & 2 deletions

File tree

src/Details.php

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,58 @@ class Details
1414
/** @var string|SubmerchantReceipt[]|null */
1515
private $receipts = null;
1616

17+
/** @var array динамические свойства */
18+
private array $valuesContainer = [];
19+
20+
/**
21+
* Установка динамических свойств по ключу
22+
* @param mixed $keys
23+
* @param mixed $values
24+
* @return self
25+
*/
26+
public function set($keys, $values) : self
27+
{
28+
if (is_array($keys) && is_array($values)) {
29+
foreach ($keys as $i => $key) {
30+
$this->valuesContainer[$key] = $values[$i];
31+
}
32+
} elseif (!is_array($keys) && !is_array($values)) {
33+
$this->valuesContainer[$keys] = $values;
34+
}
35+
36+
return $this;
37+
}
38+
39+
/**
40+
* Перенаправим определение свойств
41+
* @param $name
42+
* @param $value
43+
* @return void
44+
*/
45+
public function __set($name, $value): void {
46+
$this->valuesContainer[$name] = $value;
47+
}
48+
49+
/**
50+
* Запрос динамических свойств по ключу
51+
* @param $key
52+
* @return mixed|null
53+
*/
54+
public function get($key)
55+
{
56+
return $this->valuesContainer[$key] ?? null;
57+
}
58+
59+
/**
60+
* Перенаправим запрос публичных свойств
61+
* @param $key
62+
* @return mixed|null
63+
*/
64+
public function __get($key)
65+
{
66+
return $this->valuesContainer[$key] ?? null;
67+
}
68+
1769
/**
1870
* Получить:
1971
* - массив объектов, каждый из которых содержит мерчант код и строку с данными для регистрации чеков
@@ -46,6 +98,8 @@ public function setReceipts($receipts): self
4698
return $this;
4799
}
48100

101+
102+
49103
/**
50104
* Преобразовать объект в строку
51105
* @return array
@@ -67,6 +121,14 @@ public function toArray(): array
67121
}
68122
}
69123

70-
return array_filter($array, static fn ($value) => $value !== null);
124+
foreach ($this->valuesContainer as $key => $value) {
125+
if ($key === 'receipts') {
126+
break;
127+
}
128+
129+
$array[$key] = $value;
130+
}
131+
132+
return array_filter($array, static fn ($value) => !empty($value));
71133
}
72-
}
134+
}

0 commit comments

Comments
 (0)