serialize

(PHP 4, PHP 5, PHP 7)

serializeBir değerin saklanabilir bir gösterimini üretir

Açıklama

serialize ( mixed $değer ) : string

Bir değerin saklanabilir bir gösterimini üretir.

PHP değerlerini, yapısını ve türünü kaybetmeden saklamak veya aktarmak için kullanışlıdır.

Böyle bir değerden tekrar özgün değeri elde etmek için unserialize() işlevini kullanın.

Değiştirgeler

değer

Dizgeleştirilecek değer. serialize() işlevi, resource türü hariç her türü dizgeleştirebilir. Hatta kendine gönderimli dizileri bile dizgeleştirebilirsiniz. Dizgeleştirdiğiniz dizi veya nesnelerin içindeki döngüsel gönderimler bile saklanabilir. Bunlar dışında kalan gönderimler kaybedilir.

PHP nesneleri dizgeleştirirken önce __sleep üye işlevi çağrılmaya çalışılır. Bu işlem, nesneye dizgeleştirme öncesinde bir takım temizlikler yapabilmesi imkanını tanır. Benzer şekilde, unserialize() kullanılarak nesne özgün durumuna getirilirken __wakeup üye işlevi çağrılmaya çalışılır.

Bilginize:

Nesnenin özel üyelerinin isimlerinin önünde sınıf ismi, protected üyelerin isimlerinin önünde ise bir '*' bulunur. İsimlerin başına getirilen bu değerler her iki tarafta null baytlarla ifade edilirler.

Dönen Değerler

Belirtilen değerin herhangi bir yerde saklanabilecek, akımlar üzerinden aktarılabilen bir gösterimini döndürür.

Bunun ikil bir dizge oluşuna, null baytlar içerebileceğine ve ikil olarak ele alınabileceğine dikkat ediniz. Örneğin, serialize() çıktısının genelde bir veritabanının bir CHAR veya TEXT alanında değil bir BLOB alanında saklanması gerekir.

Örnekler

Örnek 1 - serialize() örneği

<?php
// $session_data, geçerli kullanıcı için oturum bilgisini
// içeren çok boyutlu bir dizi içerir. İsteğin sonunda bu diziyi bir
// veritabanında saklamak için serialize() işlevini kullanacağız.

$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmt$sqldata)) {
        
/* Birşeyler yanlış gitmiş.. */
    
}
}
?>

Notlar

Bilginize:

Yerleşik PHP nesenelerinin çoğunun dizgeleştirilemeyeceğine dikkar ediniz. Bu bakımda ya Serializable arayüzü veya sihirli __sleep() ve __wakeup() yöntemleri kullanılarak gerçeklenir. Dahili bir sınıf bu gereksinimleri sağlamıyorsa gerektiği gibi dizgeleştirilemez.

Yukarıdaki kuralın geçmişten gelen bazı istisnaları olup bazı dahili nesneler arayüz gerçeklemeden veya malum yöntemleri kullanmadan dizgeleştirilebilir. Özellikle, PHP 5.2.0 öncesi ArrayObject buna bir örnektir.

Uyarı

serialize() işlevi nesneleri dizgeleştirirken, azami uyumluluğu sağlamak için isimalanlı sınıfların sınıf isimlerinin sonuna tersbölü konmaz.

Ayrıca Bakınız