1--TEST-- 2Closure 3--SKIPIF-- 4<?php 5if (version_compare(PHP_VERSION, '5.3.0') < 0) { 6 echo "skip closures only for PHP 5.3.0 or newer"; 7} 8--FILE-- 9<?php 10if(!extension_loaded('msgpack')) { 11 dl('msgpack.' . PHP_SHLIB_SUFFIX); 12} 13 14$closure = function ($x) { 15 return $x + 1; 16}; 17 18class Foo implements Serializable { 19 public function serialize() { 20 echo "Should not be run.\n"; 21 } 22 23 public function unserialize($str) { 24 echo "Should not be run.\n"; 25 } 26} 27 28$array = array($closure, new Foo()); 29 30try { 31 $ser = msgpack_serialize($array); 32 echo "Serialized closure.\n"; 33 $unser = msgpack_unserialize($ser); 34 echo "Unserialized closure.\n"; 35 var_dump($unser); 36} catch (Exception $e) { 37 echo "Got exception.\n"; 38} 39--EXPECT-- 40Got exception. 41