序列化有什么作用? 为什么我们需要序列化一个Object并再次反序列化它? 它适用于任何安全措施吗?
答案 0 :(得分:4)
序列化是将对象或对象图形转换为独立于当前执行环境细节的形式的过程。
反序列化与序列化相反。它是在序列化期间读取数据并在当前执行环境中恢复对象或对象图形的过程。
序列化类似于数据编组,因为它们都描述了将对象写为与执行无关的数据。但是,序列化通常是针对特定语言/平台定制的,通常以主语言的惯用语为特色,而数据编组旨在与语言无关,提供一定程度的互操作性。
序列化格式可能不透明或透明。例如,Java序列化是不透明的 - 数据不用于反序列化以外的目的。 Java还提供了一个XMLEncoder / XMLDecoder,它根据公共属性将对象编写为XML。该格式是透明的,可以轻松处理/操作。
序列化本身不是一种安全措施。事实上,在处理安全数据时,它可能是一个漏洞。序列化用户应确保序列化数据至少与原始对象实例具有相同的安全级别。如果不这样做,则会将数据打开以供未经授权的使用。
答案 1 :(得分:2)
序列化是将对象转换为字符串的过程,然后可以将其反序列化回原来的对象。
序列化对象的一个原因是将序列化对象(字符串)存储到数据库中,然后在检索字符串并将其传递给unserialize
时可以从中重新创建。
答案 2 :(得分:1)
对象不能作为对象传递。我们将它们序列化为文本,传递它们,然后对它们进行反序列化,以便它们可以在多个地方或时间使用。
答案 3 :(得分:1)
它用于将对象存储在文件,数据库或任何可以存储字符串或将它们传递给另一个应用程序/服务器/任何东西的东西中。
serialize()
给出对象的字符串表示,而unserialize()
从序列化字符串重建对象。请记住,仍然必须存在对象类定义才能重建它。
PHP手册也解释了这一点......