Skip to content

Commit 21ff15b

Browse files
committed
YP 1493 details dynamic fields
1 parent 57492ac commit 21ff15b

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

src/Details.php

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,20 @@
99
/**
1010
* Расширенные данные по транзакции
1111
*/
12-
#[AllowDynamicProperties]
1312
class Details
1413
{
1514
/** @var string|SubmerchantReceipt[]|null */
1615
private $receipts = null;
1716

17+
/** @var array динамические свойства */
18+
private array $valuesContainer = [];
19+
1820
public function __set(string $name, $value): void {
19-
$this->{$name} = $value;
21+
$this->valuesContainer[$name] = $value;
2022
}
2123

2224
/**
25+
* Установка динамических свойств по ключу
2326
* @param mixed $keys
2427
* @param mixed $values
2528
* @return self
@@ -28,18 +31,23 @@ public function set($keys, $values) : self
2831
{
2932
if (is_array($keys) && is_array($values)) {
3033
foreach ($keys as $i => $key) {
31-
$this->${$key} = $values[$i];
34+
$this->valuesContainer[$key] = $values[$i];
3235
}
3336
} elseif (!is_array($keys) && !is_array($values)) {
34-
$this->${$keys} = $values;
37+
$this->valuesContainer[$keys] = $values;
3538
}
3639

3740
return $this;
3841
}
3942

43+
/**
44+
* Запрос динамических свойств по ключу
45+
* @param $key
46+
* @return mixed|null
47+
*/
4048
public function get($key)
4149
{
42-
return @$this->{$key} ?? null;
50+
return $this->valuesContainer[$key] ?? null;
4351
}
4452

4553
/**
@@ -97,7 +105,7 @@ public function toArray(): array
97105
}
98106
}
99107

100-
foreach ($this as $key => $value) {
108+
foreach ($this->valuesContainer as $key => $value) {
101109
if ($key === 'receipts') {
102110
break;
103111
}

0 commit comments

Comments
 (0)