@@ -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