對象序列化學習筆記

須要掌握的函數php

 

unserialize   serialize 數組

 

對象序列化的好處?函數

因爲php對象是用數組來模擬的,所以咱們把對象轉爲數組,就能看到這個對象所擁有的屬性了。this

 

class a{對象

    private $name;內存

 

    private $age;get

 

    protected function getName()string

    {it

        return $this->name;io

    }

 

}

 

class b extends a{

 

}

 

$b = new b;

print_r((array)$b);exit;

 

什麼叫序列化?

所謂序列化,就是把保存在內存中的各類對象狀態(屬性)保存起來,而且在須要時能夠還原出來。

注意:在序列化和反序列化時都須要包含類的對象的定義,否則會出現反序列化對象時,找不到該對象類的定義的錯誤

 

ect(__PHP_Incomplete_Class)#1 (3) { ["__PHP_Incomplete_Class_Name"]=> string(1) "b" ["name":"a":private]=> NULL ["age":"a":private]=> NULL } NULL

 

php手冊上面的代碼實例

 

<?php

// classa.inc:

 

  class A {

      public $one = 1;

 

      public function show_one() {

          echo $this->one;

      }

  }

 

// page1.php:

 

  include("classa.inc");

 

  $a = new A;

  $s = serialize($a);

  // 把變量$s保存起來以便文件page2.php可以讀到

  file_put_contents('store', $s);

 

// page2.php:

 

  // 要正確瞭解序列化,必須包含下面一個文件

  include("classa.inc");

 

  $s = file_get_contents('store');

  $a = unserialize($s);

 

  // 如今能夠使用對象$a裏面的函數 show_one()

  $a->show_one();

?>

 

序列化,保存的對象數據都是包含改變過的屬性的。也就是序列化的對象是保存特有屬性值的,保存方法的方法是一致的

 

object(a)#1 (2) { ["name":"a":private]=> int(10) ["age":"a":private]=> NULL } NULL

對象序列化後,存儲的只是對象的屬性。類是由屬性和方法組成的,而對象則是屬性的結合,由同一個類生成的不一樣對象,擁有各自不一樣的屬性,但共享了類的代碼空間中方法區域的代碼

相關文章
相關標籤/搜索