PHP-對象序列化____PHP

來源:互聯網
上載者:User

序列化(序列化)

1.將對象轉成字串(不用看懂這個字串)--- 序列化

2.將字串轉回對象的過程 --- 反序列化

注意(序列化時機):

1.將對象在網路中傳輸

2.將對象持久儲存,因為在記憶體裡邊,隨著指令碼執行結束,類對象會被從記憶體中清除掉



//對類對象來序列化

$p = new Person();

//將對象序列化

$str = serialize($p);

//將字串儲存在檔案objstr.txt中

file_put_contents("objstr.txt",$str);

echo "對象轉完字串,儲存到檔案成功......";


//從檔案中讀出字串,然後對該字串反序列化

$str = file_get_contents("objstr.txt");

$obj = unserialize($str);


關於序列化的魔術方法

__sleep()方法,在序列化時,自動調用的方法

作用:可以設定需要序列化的對象的屬性,也就是對要序列化的對象部分序列化

1.只要在這個方法中,返回一個數組,在數組中聲明了那個屬性名稱,哪個屬性就會被序列化,沒有在這個數組中的,就不會被序列化。預設這個方法,全部屬性都序列化。


__wakeup() 在反序列化時,自動調用的方法

作用:對象序列化回來的對象,進行初始化用的,和__construct(),__clone作用相似


function __sleep(){

echo "只序列化name,age<br/>";

return array("name","age");//表示只對name,age序列化

}

function __wakeup(){

echo "反序列化時,自動調用wakeup這個方法";

$this->age = 12;

}





資料的序列化 json --- javascript object 

<script>

var obj = {

name:"張三",

age:10,

sex:"男",

address :{

email:"xx@163.com"

}

};

alert(obj.name);

</script>


$arr = array("name"=>"zhangsan","age"=>10,"sex"=>"男");

//對數組json序列化

$str = json_encode($arr);//產生標準的json字串{"name":"tianshanshan","age":23}這樣key帶引號的就是標準的json字串。

echo $str;

//反序列化

$pobj = json_decode($str);//轉成了對象Object

var_dump($parr);

//第二個參數為true,那麼反序列化會變成數組

$parr = json_decode($str,true);//轉成數組

echo $parr["name"];


eval()函數 --- 檢查並執行php代碼

$str = "echo 'abc';";

echo $str; //這裡輸出 echo 'abc';

eval($str);//這裡檢查$str是不是合法的php代碼,如果合法,就去執行這句代碼,結果就會輸出abc


var_dump();輸出列印格式形式

$arr = array("one"=>1,"two"="222","three"=>333);

var_dump($arr);


var_export();

var_export($arr);//輸出列印格式信心,是一個標準的php文法資料

$a = var_export($arr,true);//不輸出,返回成字串賦值給$a;

$b = eval('$b='.var_export($arr,true).";");



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.