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