1--TEST--
2Phar with meta-data (write) zip-based
3--SKIPIF--
4<?php
5if (!extension_loaded("phar")) die("skip");
6?>
7--INI--
8phar.require_hash=0
9phar.readonly=0
10--FILE--
11<?php
12$fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.zip.php';
13$f2name = __DIR__ . '/files/metadata.phar.zip';
14$pname = 'phar://' . $fname;
15$p2name = 'phar://' . $f2name;
16
17$file = "<?php __HALT_COMPILER(); ?>";
18
19$files = array();
20$files['a'] = array('cont' => 'a');
21$files['b'] = array('cont' => 'b', 'meta' => 'hi there');
22$files['c'] = array('cont' => 'c', 'meta' => array('hi', 'there'));
23$files['d'] = array('cont' => 'd', 'meta' => array('hi'=>'there','foo'=>'bar'));
24
25foreach($files as $name => $cont) {
26    var_dump(file_get_contents($p2name.'/'.$name));
27}
28
29copy($f2name, $fname);
30$phar = new Phar($fname);
31$phar->startBuffering();
32$phar['a']->setMetadata(42);
33$phar['b']->setMetadata(NULL);
34$phar['c']->setMetadata(array(25, 'foo'=>'bar'));
35$phar['d']->setMetadata(true);
36$phar->setMetadata('hi');
37
38foreach($files as $name => $cont) {
39    var_dump($phar[$name]->getMetadata());
40}
41$phar->stopBuffering();
42
43unset($phar);
44
45$phar = new Phar($fname);
46
47foreach($files as $name => $cont) {
48    var_dump(file_get_contents($pname.'/'.$name));
49}
50
51foreach($files as $name => $cont) {
52    var_dump($phar[$name]->getMetadata());
53}
54var_dump($phar->getMetadata());
55?>
56--CLEAN--
57<?php unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.zip.php'); ?>
58--EXPECT--
59string(1) "a"
60string(1) "b"
61string(1) "c"
62string(1) "d"
63int(42)
64NULL
65array(2) {
66  [0]=>
67  int(25)
68  ["foo"]=>
69  string(3) "bar"
70}
71bool(true)
72string(1) "a"
73string(1) "b"
74string(1) "c"
75string(1) "d"
76int(42)
77NULL
78array(2) {
79  [0]=>
80  int(25)
81  ["foo"]=>
82  string(3) "bar"
83}
84bool(true)
85string(2) "hi"
86