Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

--TEST-- SPL: unserialize with no data (for PHPUnit) --FILE-- <?php $types = array('SplDo..

Decoded Output download

--TEST--
SPL: unserialize with no data (for PHPUnit)
--FILE--
<?php

$types = array('SplDoublyLinkedList', 'SplObjectStorage', 'ArrayObject');

foreach ($types as $type) {
    // serialize an empty new object
    $exp = serialize(new $type());
    // hack to instantiate an object without constructor
    $str = sprintf('C:%d:"%s":0:{}', strlen($type), $type);
    $obj = unserialize($str);
    var_dump($obj);
    // serialize result
    $out = serialize($obj);
    // both should match
    var_dump($exp === $out);
}
?>
--EXPECTF--
object(SplDoublyLinkedList)#%d (2) {
  ["flags":"SplDoublyLinkedList":private]=>
  int(0)
  ["dllist":"SplDoublyLinkedList":private]=>
  array(0) {
  }
}
bool(true)
object(SplObjectStorage)#%d (1) {
  ["storage":"SplObjectStorage":private]=>
  array(0) {
  }
}
bool(true)
object(ArrayObject)#%d (1) {
  ["storage":"ArrayObject":private]=>
  array(0) {
  }
}
bool(true)

Did this file decode correctly?

Original Code

--TEST--
SPL: unserialize with no data (for PHPUnit)
--FILE--
<?php

$types = array('SplDoublyLinkedList', 'SplObjectStorage', 'ArrayObject');

foreach ($types as $type) {
    // serialize an empty new object
    $exp = serialize(new $type());
    // hack to instantiate an object without constructor
    $str = sprintf('C:%d:"%s":0:{}', strlen($type), $type);
    $obj = unserialize($str);
    var_dump($obj);
    // serialize result
    $out = serialize($obj);
    // both should match
    var_dump($exp === $out);
}
?>
--EXPECTF--
object(SplDoublyLinkedList)#%d (2) {
  ["flags":"SplDoublyLinkedList":private]=>
  int(0)
  ["dllist":"SplDoublyLinkedList":private]=>
  array(0) {
  }
}
bool(true)
object(SplObjectStorage)#%d (1) {
  ["storage":"SplObjectStorage":private]=>
  array(0) {
  }
}
bool(true)
object(ArrayObject)#%d (1) {
  ["storage":"ArrayObject":private]=>
  array(0) {
  }
}
bool(true)

Function Calls

None

Variables

$type SplDoublyLinkedList
$types [{'key': 0, 'value': 'SplDoublyLinkedList'}, {'key': 1, 'value': 'SplObjectStorage'}, {'key': 2, 'value': 'ArrayObject'}]

Stats

MD5 87cd44b42a108a4cbc8f7c72942c4000
Eval Count 0
Decode Time 88 ms