3v4l.org

run code in 300+ PHP versions simultaneously
<?php $start = new DateTime('yesterday'); $restrict_array = array(); if (is_callable(array($start, '__sleep'))) { echo "Called: __sleep()".PHP_EOL; var_dump($restrict_array = $start->__sleep()); echo PHP_EOL.PHP_EOL.PHP_EOL; } $serialized = array( 'class' => get_class($start), 'state' => (array) $start ); if (!empty($restrict_array)) { $serialized['state'] = array_intersect_key($serialized['state'], $restrict_array); } echo "Serialized Data:".PHP_EOL; var_dump($serialized); echo PHP_EOL.PHP_EOL.PHP_EOL; unset($start); if (is_callable(array($serialized['class'], '__set_state'))) { echo "Called: __set_state()".PHP_EOL; var_dump($serialized['class']::__set_state($serialized['state'])); echo PHP_EOL.PHP_EOL.PHP_EOL; } if (is_callable(array($serialized['class'], '__wakeup'))) { echo "Called: __wakeup()".PHP_EOL; $serialized['class']::__wakeup(); }
Output for git.master, git.master_jit, rfc.property-hooks
Serialized Data: array(2) { ["class"]=> string(8) "DateTime" ["state"]=> array(3) { ["date"]=> string(26) "2016-01-05 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "Europe/Amsterdam" } } Called: __set_state() object(DateTime)#1 (3) { ["date"]=> string(26) "2016-01-05 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "Europe/Amsterdam" }

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
83.78 ms | 402 KiB | 8 Q