* [Dictionary, ObjectArray] Исправлен метод сериализации. Теперь классы нормально восстанавливаются.
This commit is contained in:
Александр Бабаев 2025-05-19 07:04:25 +03:00
parent f98a277986
commit 2e684cb862
3 changed files with 12 additions and 4 deletions

View File

@ -13,7 +13,7 @@ use IteratorAggregate;
* *
* @author Александр Бабаев * @author Александр Бабаев
* @package php_components_pack * @package php_components_pack
* @version 1.0.1 * @version 1.0.2
* @since 1.0.14 * @since 1.0.14
*/ */
final class Dictionary implements ArrayAccess, IteratorAggregate, Countable, ISerializable final class Dictionary implements ArrayAccess, IteratorAggregate, Countable, ISerializable

View File

@ -17,7 +17,7 @@ use IteratorAggregate;
* *
* @author Александр Бабаев * @author Александр Бабаев
* @package php_components_pack * @package php_components_pack
* @version 1.0 * @version 1.0.5
* @since 1.0 * @since 1.0
*/ */
final class ObjectArray implements ArrayAccess, IteratorAggregate, Countable, ISerializable final class ObjectArray implements ArrayAccess, IteratorAggregate, Countable, ISerializable

View File

@ -77,7 +77,11 @@ trait ArrayBasicTrait
*/ */
public function Serialize (): string public function Serialize (): string
{ {
return json_encode($this->Container); /**
* ВНИМАНИЕ! Не используйте json_encode для сериализации объектов данного класса, так как он НЕ СОХРАНЯЕТ классы объектов!
* Корректное восстановление объектов невозможно (восстанавливает только как ассоциативный массив).
*/
return serialize($this->Container);
} }
/** /**
@ -85,6 +89,10 @@ trait ArrayBasicTrait
*/ */
public function UnSerialize (string $serialized): void public function UnSerialize (string $serialized): void
{ {
$this->Container = json_decode($serialized, true); /**
* ВНИМАНИЕ! Не используйте json_decode для десериализации объектов данного класса, так как он НЕ ВОССТАНОВЛЯЕТ
* классы объектов! Корректное восстановление объектов невозможно (восстанавливается только как ассоциативный массив).
*/
$this->Container = unserialize($serialized, true);
} }
} }