1--TEST-- 2Phar with object in metadata 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.php'; 13$pname = 'phar://' . $fname; 14$file = "<?php __HALT_COMPILER(); ?>"; 15 16$files = array(); 17$files['a'] = array('cont' => 'a'); 18include 'files/phar_test.inc'; 19 20foreach($files as $name => $cont) { 21 var_dump(file_get_contents($pname.'/'.$name)); 22} 23 24$phar = new Phar($fname); 25var_dump($phar->getMetadata()); 26$phar->setMetadata((object) ['my' => 'friend']); 27unset($phar); 28// NOTE: Phar will use the cached value of metadata if setMetaData was called on that Phar path before. 29// Save the writes to the phar and use a different file path. 30$fname_new = "$fname.copy.php"; 31copy($fname, $fname_new); 32$phar = new Phar($fname_new); 33var_dump($phar->getMetadata()); 34 35?> 36--CLEAN-- 37<?php 38unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); 39unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php.copy.php'); 40?> 41--EXPECT-- 42string(1) "a" 43NULL 44object(stdClass)#2 (1) { 45 ["my"]=> 46 string(6) "friend" 47} 48