日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 序列化 java_PHP--序列化与反序列化详解

發布時間:2025/3/15 php 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 序列化 java_PHP--序列化与反序列化详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PHP--序列化與反序列化詳解

博客說明

文章所涉及的資料來自互聯網整理和個人總結,意在于個人學習和經驗匯總,如有什么地方侵權,請聯系本人刪除,謝謝!

說明

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

為了能夠unserialize()一個對象,這個對象的類必須已經定義過。如果序列化類A的一個對象,將會返回一個跟類A相關,而且包含了對象所有變量值的字符串。 如果要想在另外一個文件中解序列化一個對象,這個對象的類必須在解序列化之前定義,可以通過包含一個定義該類的文件或使用函數spl_autoload_register()來實現。

PHP序列化:serialize

序列化是將變量或對象轉換成字符串的過程。

class student{

public $name;

public $age;

public $number;

//_construct:創建對象時初始化

function __construct($name,$age,$number){

$this->name = $name;

$this->age = $age;

$this->number = $number;

}

}

$student = new student("Jack",22,11086);

var_dump(serialize($student));

?>

測試運行

string(76) "O:7:"student":3:{s:4:"name";s:4:"Jack";s:3:"age";i:22;s:6:"number";i:11086;}"

PHP反序列化:unserialize

反序列化是將字符串轉換成變量或對象的過程。

class student{

public $name;

public $age;

public $number;

//_construct:創建對象時初始化

function __construct($name,$age,$number){

$this->name = $name;

$this->age = $age;

$this->number = $number;

}

}

$student = 'O:7:"student":3:{s:4:"name";s:4:"Jack";s:3:"age";i:22;s:6:"number";i:11086;}';

var_dump(unserialize($student));

?>

測試運行

object(student)#1 (3) {

["name"]=>

string(4) "Jack"

["age"]=>

int(22)

["number"]=>

int(11086)

}

魔術函數

函數

說明

__construct()

類的構造函數

__destruct()

類的析構函數

__call()

在對象中調用一個不可訪問方法時調用

__callStatic()

用靜態方式中調用一個不可訪問方法時調用

__get()

獲得一個類的成員變量時調用

__set()

設置一個類的成員變量時調用

__isset()

當對不可訪問屬性調用isset()或empty()時調用

__unset()

當對不可訪問屬性調用unset()時被調用

__sleep()

執行serialize()時,先會調用這個函數

__wakeup()

執行unserialize()時,先會調用這個函數

__toString()

類被當成字符串時的回應方法

__invoke()

調用函數的方式調用一個對象時的回應方法

__set_state()

調用var_export()導出類時,此靜態方法會被調用

__clone

當對象復制完成時調用

__autoload()

嘗試加載未定義的類

__debugInfo()

打印所需調試信息

為什么突然說到魔術函數呢,因為在序列化和反序列化的時候經常會用到__construct(),__destruct(),__sleep(),__wakeup()

在后面的博客里面有相應的ctf實例

感謝

萬能的網絡

以及勤勞的自己

總結

以上是生活随笔為你收集整理的php 序列化 java_PHP--序列化与反序列化详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。