Безопасная сериализация объектов с массивами указателей на другие объекты

Для проекта PHP, над которым я работаю, у меня есть объект (на самом деле одноэлементный, но это не очень важно, я знаю, что мне нужно будет сделать специальный случай для статических значений). Этот объект содержит защищенные массивы, каждый из которых содержит указатели от десяти до тридцати других объектов.

Как проще всего сериализовать (а также десериализовать) всю структуру данных, сохранив при этом все соответствующие ссылки и индексы (чем и является большинство массивов)?

подробности

Программа имеет дело с картами, каждая из которых представлена ​​объектами, и эти объекты собираются пачками (также объектами) и регистрируются в объекте, называемом box. Пакеты также регистрируются в ящике (передавая по ссылке объект), который поддерживает индекс обоих. Box выполняет различные операции (например, получение случайной карты из каждой колоды и добавление ее в другой массив (в качестве указателя) и создание зеркального массива (за исключением этих карт), называемого индексом, который он тасует. Карты затем «сдаются» между экземплярами объект игрока (который также, вероятно, зарегистрируется в поле).

Было бы неплохо подумать, что я могу просто сериализовать коробку, и все будет хорошо, но я сильно сомневаюсь в этом. Как я могу быть уверен, что все ссылки (массивы указателей) являются целыми и правильными (а не копиями объектов) после того, как беспорядок объектов превратился в строку и снова стал объектами?

ОБНОВЛЕНИЕ

  1. Я попытался просто сбросить коробку с сериализацией и получил

Не удалось преобразовать объект класса pack в int в /path/to/box.class.php в строке XYZ

Честно говоря, это то, что я ожидал. Таким образом, мой вопрос о том, как я делаю это.

  1. Может я плохо общаюсь? Возможно, какой-то код сделает это более понятным.

Обратите внимание на то, сколько по хранилищу ссылок у нас происходит. Как реализовать интерфейс Serializable для учета этого?

<?php

class box{
public $cards = array();
public $index = array();
protected $solution = array();
public $packs = array();

public function shuffle(){
if(count($this->index==0)){
$this->index = $this->cards;
}
shuffle($this->index);
}

public function set_up(){
$this->index = $this->cards;
foreach($this->packs as $pack){
$card=$pack->chooseAtRandom();
unset($this->index[$card->getID()]);
$this->solution[]&=$card;
}
$this->shuffle();
}

public function registerPackToBox(&$pack){
$this->packs[] &= $pack;
return (count($this->packs)-1);
}

public function registerCardToBox(&$card){
$this->cards[] &= $card;
return (count($this->cards)-1);
}

// ... other stuff ...

}

-1

Решение

Просматривая документы, $ _SESSION автоматически сериализует и сохраняет объекты для вас.

Пример: http://example.preinheimer.com/sessobj.php

-1

Другие решения

Других решений пока нет …