PHP nesne serileştirme ve Seanslar

2 Cevap php

Nasıl $ _SESSION alt-nesneleri seri hale getirmek mümkün mü? İşte ben ne çalışıyorum, bir örnek:

arraytest.php:

<?php

class ArrayTest {
    private $array1 = array();
    public function __construct(){
        $this->array1[] = 'poodle';
    }
    public function getarray(){
        return $this->array1;
    }
}

class DoDoDo {
   public $poop;
   public function __construct(){
        $poop = new ArrayTest();
    }
    public function foo()
    {echo 'bar';}
}

?>

Page 1:

<?php
require_once('arraytest.php');
session_start();
$bob = new DoDoDo();
$_SESSION['bob'] = serialize($bob);
?>

Page 2:

<?php
require_once('arraytest.php');
session_start();
$bob = unserialize($_SESSION['bob']);
$bob->foo();
print_r($bob->poop->getarray()); // This generates an error.
?>

Ben nesne, nesneler yıllardan sayfasında 1 $poop özelliği atanan ArrayTest örneğini serisini nasılsa zaman kanıtı gibi sayfa 2 ölümcül hatası üretir, artık yok işaretli satırda:

Ölümcül hata: sıralı 6 olmayan bir nesne üzerinde bir üye işlev GetArray () Çağrı

2 Cevap

Senin sorunun serileştirme değildir. Sınıf Dododo yapıcı bir hata var. Sen sınıf nesnesi başvuran değil, ancak bunun yerine yapıcı'nın ad içinde yeni bir değişken "kıç" başvuruyorsunuz. Bu-> a $ kaçırıyorsun.

class dododo{
   public $poop;
   public function __construct(){
        $this->poop = new arraytest();
    }
    public function foo()
    {echo 'bar';}
}

Bu değişiklik ile çalışıyor.

Bu serileştirme ile ilgisi var. Bu, ilk olarak mevcut değildir. Sen kurucu içinde yanlış var, olmalıdır:

   public function __construct(){
        $this->poop = new arraytest();
    }