Serialize ($ var) gibi basit PHP / serileştirme dizme mı?

2 Cevap php

Buradan Vikipedi dizme bir tanımı bulunuyor:

In computer science, marshalling (similar to serialization) is the process of transforming the memory representation of an object to a data format suitable for storage or transmission. It is typically used when data must be moved between different parts of a computer program or from one program to another.

Ben her zaman genellikle nesneleri veya diziler, onun serialize fonksiyonu ile php veri serileştirme yaptık. Ama nasıl dizme / serileştirme wikipedia tanımı bu serizalize() fonksiyonunda yer alır?

2 Cevap

Ne serialize yapmaz ulaşım sınıf tanımları olduğunu. Bir nesneyi unserializing, o nesnenin sınıf tanımının aksi unserializing başarısız olur, (kod tabanından yüklenmiş) mevcut olmalıdır. Dan the Wikipedia article you mention:

"Mareşal" bir nesne sıralıyor nesne "unmarshalled" olduğunda, orijinal nesnenin bir kopyası muhtemelen otomatik olarak nesnenin sınıf tanımlarını yükleyerek, elde böyle bir şekilde kendi durumunu ve kod tabanını (ler) kaydetmek demektir. Siz seri hale veya uzaktan herhangi bir nesneye sıralayabilir. Manevra da codebases kayıtları dışında sıralanırken, serileştirme gibi. Manevra uzak özel nesneleri o sıralanırken davranır serileştirme farklıdır.

Eğer doğru anlamak, Serialize kesinlikle bu konuda dizme tanımı ile% 100 uyumlu değildir. PHP bu yapacağını önceden tanımlanmış bir mekanizma bilmiyorum. Sana bir paket (örneğin bir ZIP dosyası) içine tefrika veri ve gerekli tüm sınıf tanımlarını birleştirmek olurdu sanırım.

Pekka Yukarıda söylediğim gibi dizme yapmaz yani, PHP, sınıf tanımı yer almamaktadır. Bir tefrika nesnesi için sınıf varsa, ancak o zaman sorunuzun cevabı evet: serileştirme is kadar kolay serialize($abc).

PHP dizme dikkat çekmek için biliyorum en iyi yolu sizin için serialize ve mareşal olacak Google Tampon Protokolleri veya Facebook gibi bir üçüncü taraf aracı (Apache?) Thrift, kullanmaktır. (Ve sürece mevcut sınıf var gibi, yine sıralamakta gerekmez) bunu yapmanın dolambaçlı bir şekilde bir tür, ama onlar muhtemelen soruna iyi bir çözüm demektir.