3 Commits

Author SHA1 Message Date
2e684cb862 20250519
* [Dictionary, ObjectArray] Исправлен метод сериализации. Теперь классы нормально восстанавливаются.
2025-05-19 07:04:25 +03:00
f98a277986 Merge remote-tracking branch 'Babaev-anGit/main' 2025-05-16 23:35:54 +03:00
5b83b096e5 20250516
* [Dictionary] Добавлен метод Keys (): array, который возвращает все ключи словаря.
* [Dictionary] Добавлен метод Sort (bool $descending = false): void, который сортирует внутренние данные по ключам (в обратном порядке, если выбран $descending = true).
2025-05-16 23:35:48 +03:00
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 * @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);
} }
} }