男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站

對象序列化

序列化對象 - 在會(huì )話(huà)中存放對象

所有php里面的值都可以使用函數serialize()來(lái)返回一個(gè)包含字節流的字符串來(lái)表示。unserialize()函數能夠重新把字符串變回php原來(lái)的值。 序列化一個(gè)對象將會(huì )保存對象的所有變量,但是不會(huì )保存對象的方法,只會(huì )保存類(lèi)的名字。

為了能夠unserialize()一個(gè)對象,這個(gè)對象的類(lèi)必須已經(jīng)定義過(guò)。如果序列化類(lèi)A的一個(gè)對象,將會(huì )返回一個(gè)跟類(lèi)A相關(guān),而且包含了對象所有變量值的字符串。 如果要想在另外一個(gè)文件中反序列化一個(gè)對象,這個(gè)對象的類(lèi)必須在反序列化之前定義,可以通過(guò)包含一個(gè)定義該類(lèi)的文件或使用函數spl_autoload_register()來(lái)實(shí)現。

<?php
// classa.inc:
  
  
class {
      public 
$one 1;
    
      public function 
show_one() {
          echo 
$this->one;
      }
  }
  
// page1.php:

  
include("classa.inc");
  
  
$a = new A;
  
$s serialize($a);
  
// 把變量$s保存起來(lái)以便文件page2.php能夠讀到
  
file_put_contents('store'$s);

// page2.php:
  
  // 要正確反序列化,必須包含下面一個(gè)文件
  
include("classa.inc");

  
$s file_get_contents('store');
  
$a unserialize($s);

  
// 現在可以使用對象$a里面的函數 show_one()
  
$a->show_one();
?>

在應用程序中序列化對象以便在之后使用,強烈推薦在整個(gè)應用程序都包含對象的類(lèi)的定義。 不然有可能出現在反序列化對象的時(shí)候,沒(méi)有找到該對象的類(lèi)的定義,從而把沒(méi)有方法的類(lèi)__PHP_Incomplete_Class_Name作為該對象的類(lèi),導致返回一個(gè)沒(méi)有用的對象。

所以在上面的例子中,當運行session_register("a"),把變量$a放在會(huì )話(huà)里之后,需要在每個(gè)頁(yè)面都包含文件classa.inc,而不是只有文件page1.phppage2.php。

除了以上建議,可以在對象上使用 __sleep()__wakeup() 方法對序列化/反序列化事件掛載鉤子。 使用 __sleep() 也能夠讓你僅序列化對象的某些屬性。

男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站