Için PHP'nin serialize () işlevi nedir?

3 Cevap php

Ben sadece serialize() ve unserialize() işlevleri hakkında öğrendim. Bunun için bazı kullanım alanları nelerdir? Ben insanların bir veritabanına koymak şeyler serialize biliyorum. Eğer faydalı olduğu bazı örnek kullanır bana verebilir misiniz?

Ben de javascript tefrika kodunu görmek, bu aynı mı? Javascript bir tefrika dize php ile dizgilenmemiş olabilir miyim unserialize()?

3 Cevap

PHP serialize bir metin biçiminde bir dizi veya nesne tutmanızı sağlar. $ _SESSION Gibi şeyler diziler atarken, PHP bir metin dosyasında saklamak ve daha sonra bunu yeniden sağlar. Serialize nesneler ve değişkenler için bu gibi kullanılır. (Sadece emin nesne önceden kullandığı sınıf ilan etti olun)

Öte yandan Wordpress doğrudan veritabanında seri hale dizileri depolayarak, çok benzer bir yöntem kullanır. Eğer tuşları => değerleri bir veritabanı tutarsanız, bu, çünkü dizilerin esneklik çok faydalı olabilir, size değer parametre şeyi saklayabilirsiniz.

Ve burada linki (ilk commentor nezaket): http://us3.php.net/serialize

Ben sık sık Veritabanı seralized veri deposu görmek, ve ben gerçekten bu sevmiyorum:

  • bu verilerle SQL çalışmak gerçekten zor: nasıl koşullar tefrika veri yazabilirim? Bile zor: bunu nasıl güncelleyebilirim? Eğer gerçekten geri DB yeniden serialize ve saklar, bunları değiştirir, bu unserialize, her satırları getirir bir PHP komut dosyası yazmak mı? :-(
  • Eğer başka bir yazılım için veri göç etmek isteyeceksiniz gün, (and be even more work if the new software is not written in PHP, btw) verilerini geçirmek için daha fazla çalışma gerekli olacak

Yine de, ben değil-iyi-tanımlı veri depolamak için kolay bir yoldur itiraf ... ve bazen bunun için kullanıyorsun ...

Örneğin, webservice çeşit yoluyla nesneleri gönderme yol çeşit tefrika olmalarını gerektirir: serileştirme için başka bir kullanımı iki sistem arasında veri alışverişini kolaylaştırmaktır.

Iki sistem PHP iseniz, serialize / unserialize ile tasavvur edilebilir. Ama, burada da, ne sistemin bir ise artık PHP değil mi? Biraz daha zor ilk başta, ama bu formatları da diğer dillerde bilinen olarak muhtemelen daha uzun vadeli bir çözüm,: JSON veya SABUN kullanarak muhtemelen daha iyi bir seçimdir.

PHP'nin serialize işlevini kullanmak bir şey bir PHP uygulaması, önbellek (like APC's user's cache) veri depolamak için: Eğer gibi-olduğu nesneleri saklamak değildir: bunları seri hale getirmek zorunda. Önbellek yalnızca bir uygulama tarafından kullanıldığı gibi, birçok dilde bilinen bir format kullanmak için gerekli değildir; yani, Tamam serialize ... Ve, önbellekte veri depolamak için, bir gerçekten hızlı serileştirme işlevini kullanmanız gerekir - ve seri ^ ^ oldukça hızlı

Ben sık kullandığınız serialize için yepyeni bir alan yaratmak değmez veritabanında önemli bilgileri saklamak için, ancak gelecekte kullanım olabilir.

Kullanıcı sadece birkaç öğeleri saklamak bir form doldurur, ama ben bunları daha sonra ihtiyaç halinde hepsini tutmak istiyorsanız Örneğin, ben form öğelerinin dizi serialize edeceğiz ve bu veritabanında depolamak.