File: 042.phpt

package info (click to toggle)
php-msgpack 1%3A2.2.0~rc2-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 2,200 kB
  • sloc: ansic: 3,817; xml: 416; makefile: 2
file content (48 lines) | stat: -rw-r--r-- 964 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
--TEST--
Closure
--SKIPIF--
<?php
if (version_compare(PHP_VERSION, '5.3.0') < 0) {
    echo "skip closures only for PHP 5.3.0 or newer";
}
--FILE--
<?php
if(!extension_loaded('msgpack')) {
    dl('msgpack.' . PHP_SHLIB_SUFFIX);
}

$closure = function ($x) {
    return $x + 1;
};

class Foo implements Serializable {
    public function serialize() {
        echo "Should not be run.\n";
    }

    public function unserialize($str) {
        echo "Should not be run.\n";
    }

    public function __serialize() {
        return [$this->serialize()];
    }

    public function __unserialize($serialized) {
        return $this->unserialize($serialized[0]);
    }
}

$array = array($closure, new Foo());

try {
    $ser = msgpack_serialize($array);
    echo "Serialized closure.\n";
    $unser = msgpack_unserialize($ser);
    echo "Unserialized closure.\n";
    var_dump($unser);
} catch (Exception $e) {
    echo "Got exception.\n";
}
--EXPECT--
Got exception.