2015-11-16 3 views
1

Тег <cfwddx> может быть легко использован для сериализации и десериализации сложных типов данных, таких как массивы, структуры и запросы, но не экземпляры cfc.как сериализовать экземпляр cfc

Каков наилучший способ сериализации и последующего десериализации cfc?

+0

Или, hm. Возможно, это не разумно, поскольку данные внутри компонента скрыты. –

+0

Вероятно, лучшим способом справиться с этим было бы добавить метод, который дает вам память данных для текущего экземпляра CFC. Я часто использую этот метод, когда мне нужно передавать данные взад и вперед как JSON. –

+0

Право на. Я тоже об этом думал. У меня на самом деле есть такой метод getInstanceData() .... так что я просто использую это и сериализую результат, я думаю. Спасибо, Скотт! –

ответ

3

Из-за природы экземпляра CFC (скрытие данных) процесс wddx не может выглядеть «внутри» его, чтобы сериализовать его.

Однако у вас есть два варианта сериализации экземпляров CFC, в зависимости от того, что вы хотите выполнить.

  1. Если вы хотите сериализовать внутреннее состояние экземпляра CFC, вы должны просто добавить метод в вашей CFC, который возвращает переменные рамки экземпляра CFC. Затем вы можете просто сериализовать ответ от вызова этого метода. getMemento() или getInstanceData() должен работать. - Спасибо, Скотт Строз!

  2. Если вы хотите сериализовать метаданные (свойства и методы) экземпляра CFC, вы можете использовать функцию ColdFusion в функции getComponentMetadata() и сериализовать результат этого вызова. - Спасибо Дэн Бракук!

1

Заканчивать ObjectSave() и ObjectLoad(), но ИМО они могут быть рискованными, если сериализованные данные должны быть загружены в другой версии CF вниз по дороге.