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