2017-09-15 52 views
0

感謝Stack Overflow,我剛剛知道PHP中的serialize()和unserialize()是什麼。從PHP的序列化中解釋字符串

我碰到這個代碼示例中PHP.net Manual傳來:

class obj implements Serializable { 
private $data; 
public function __construct() { 
    $this->data = "My private data"; 
    } 
public function serialize() { 
    return serialize($this->data); 
} 
public function unserialize($data) { 
    $this->data = unserialize($data); 
} 
public function getData() { 
    return $this->data; 
} 
} 

$obj = new obj; 
$ser = serialize($obj); 

var_dump($ser); 

$newobj = unserialize($ser); 

var_dump($newobj->getData()); 

的代碼產生以下結果:

string(38) "C:3:"obj":23:{s:15:"My private data";}" 
string(15) "My private data" 

我想知道什麼是「C」是指在這個字符串,爲什麼它等於到「3」和「obj」,爲什麼它等於「23」。

我知道「s」表示字符串,它包含15個字符,但我無法理解C和obj及其結果。

回答

3

PHP的序列化格式很大程度上取決於聲明什麼是什麼,然後聲明以下字符屬於它的數量。所以C意味着ç姑娘,3意味着以下三個字符會告訴你它是什麼類,obj是這三個字符告訴你的類名,23告訴你,下面的23個字符描述對象的數據,以及休息是自我解釋。

+2

具體而言,'C'裝置它是一個實現'Serializable'接口的類。其他類將用'O'代替。 – salathe

1

C =類

3 - 「OBJ」 具有3個字符

23 - 因爲{S:15: 「我的私人數據」;}具有23個字符