2010-04-10 5 views
6

aquí una definición de cálculo de referencias de Wikipedia:

En informática, de clasificación (similar a la serialización) es el proceso de transformar la representación de memoria de un objeto a un dato formato adecuado para su almacenamiento o transmisión. Normalmente se usa cuando los datos se deben mover entre diferentes partes de un programa de computadora o de un programa a otro.

Siempre he hecho la serialización de datos en php a través de su función de serialización, generalmente en objetos o matrices. ¿Pero cómo se lleva a cabo la definición de ordenación/serialización de wikipedia en esta función serizalize()?

Respuesta

3

Lo que serialize no hace son las definiciones de clases de transporte. Al desempaquetar un objeto, la definición de clase de ese objeto debe estar presente (cargada desde la base del código), de lo contrario, la desinstalación fallará. De the Wikipedia article you mention:

Para "Marshal" un objeto medio para registrar su estado y código base (s) de tal manera que cuando el objeto formateado es "unmarshalled", se obtiene una copia del objeto original, posiblemente por cargar automáticamente las definiciones de clase del objeto. Puede ordenar cualquier objeto que sea serializable o remoto. Marshalling es como la serialización, excepto el marshalling también registra las bases de código. Marshalling es diferente de la serialización en que el marshalling trata especialmente los objetos remotos.

Si entiendo correctamente, Serialize definitivamente no es 100% compatible con la definición de marshaling al respecto. No conozco un mecanismo predefinido que pueda hacer esto en PHP. Supongo que tendrías que combinar los datos serializados y todas las definiciones de clase necesarias en un paquete (un archivo ZIP, por ejemplo).

1

Al igual que Pekka mencionado anteriormente, PHP no incluye la definición de la clase, por lo que no hace cálculo de referencias. Sin embargo, si la clase para un objeto serializado está presente, la respuesta a su pregunta es sí: la serialización es tan fácil como serialize($abc).

La mejor manera que conozco de encargarme de calcular las referencias en PHP es usar una herramienta de terceros como Google Buffer Protocols o Facebook (Apache?) Thrift, que se serializará y organizará para usted. Es una forma indirecta de hacerlo (y siempre que tenga presente la clase, no necesita reunirse de todos modos), pero probablemente sea la mejor solución al problema.

Cuestiones relacionadas