2014-11-06 38 views
0

我有一個序列化的PHP對象,它看起來以下,當我反序列化它:如何從PHP中的不完整類對象獲取值?

__PHP_Incomplete_Class Object 
(
    [__PHP_Incomplete_Class_Name] => model_Baubeschreibung 
    [prototype:persistence_Table:private] => Array 
     (
      [model_Baubeschreibung] => Array 
       (
        [table] => rp_baubeschreibung 
        // ... some more stuff here 
       ) 
     ) 
    [table:persistence_Table:private] => rp_baubeschreibung 
    [id:persistence_Table:private] => 170 
    [properties:persistence_Table:private] => Array 
     (
      [name] => MY NAME 
      [description] => MY DESCRIPTION 
      [category] => MY CATEGORY 
     ) 

    [references:persistence_Table:private] => Array 
     (
      // Some more stuff here 
     ) 
    [objects:persistence_Table:private] => Array 
     (
     ) 
    [callback:persistence_Table:private] => Array 
     (
     ) 
    [state:persistence_Table:private] => 2 
); 

我沒有加載類,這個對象指的是選項。

有沒有什麼辦法可以從對象中獲得值'MY NAME','MY DESCRIPTION','MY CATEGORY'以及id(這裏:170)?充其量沒有preg_match。 我試圖循環對象,但沒有奏效。

回答

1

您需要在反序列化對象之前包含類定義。使用適當的自動加載器或只包含課程。

當你這樣做。它將被適當地鑄造成你的課堂的對象。

+0

那麼這就是問題,我沒有類defenition,我只是有一個序列化字符串對象 – 2014-11-06 11:03:49

+1

你可以將它轉換爲stdClass的或使用' get_object_vars()' – Robert 2014-11-06 11:04:29

+0

get_object_vars沒有工作,我實際上是沿着類定義的,包括它解決了問題,謝謝你的halp – 2014-11-06 11:44:01

0

演員的陣列和讀取性能:

$unserializedObject = unserialize($string); 
$array = (array)$unserializedObject; 
var_dump($array["\0persistence_Table\0properties"]); 
       //^    ^
       // these null bytes are required!