1--TEST--
2Phar::startBuffering()/setStub()/stopBuffering() zip-based
3--EXTENSIONS--
4phar
5--INI--
6phar.readonly=0
7--FILE--
8<?php
9$p = new Phar(__DIR__ . '/phar_begin_setstub_commit.phar.zip', 0, 'phar_begin_setstub_commit.phar');
10var_dump($p->isFileFormat(Phar::ZIP));
11//var_dump($p->getStub());
12var_dump($p->isBuffering());
13$p->startBuffering();
14var_dump($p->isBuffering());
15$p['a.php'] = '<?php var_dump("Hello");';
16$p->setStub('<?php var_dump("First"); Phar::mapPhar("phar_begin_setstub_commit.phar"); __HALT_COMPILER(); ?>');
17include 'phar://phar_begin_setstub_commit.phar/a.php';
18var_dump($p->getStub());
19$p['b.php'] = '<?php var_dump("World");';
20$p->setStub('<?php var_dump("Second"); Phar::mapPhar("phar_begin_setstub_commit.phar"); __HALT_COMPILER();');
21include 'phar://phar_begin_setstub_commit.phar/b.php';
22var_dump($p->getStub());
23$p->stopBuffering();
24echo "===COMMIT===\n";
25var_dump($p->isBuffering());
26include 'phar://phar_begin_setstub_commit.phar/a.php';
27include 'phar://phar_begin_setstub_commit.phar/b.php';
28var_dump($p->getStub());
29
30// add portion to test setting stub from resource
31file_put_contents(__DIR__ . '/myfakestub.php', '<?php var_dump("First resource"); Phar::mapPhar("phar_begin_setstub_commit.phar"); __HALT_COMPILER(); ?>');
32$a = fopen(__DIR__ . '/myfakestub.php', 'rb');
33$p->setStub($a);
34var_dump($p->getStub());
35$c = strlen('<?php var_dump("First resource"); Phar::mapPhar("phar_begin_setstub_commit.phar"); __HALT_COMPILER(); ?>');
36file_put_contents(__DIR__ . '/myfakestub.php', '<?php var_dump("First resource"); Phar::mapPhar("phar_begin_setstub_commit.phar"); __HALT_COMPILER(); ?>' . 'extra stuff');
37fseek($a, 0);
38$p->setStub($a, $c);
39var_dump($p->getStub());
40fclose($a);
41?>
42--CLEAN--
43<?php
44unlink(__DIR__ . '/phar_begin_setstub_commit.phar.zip');
45unlink(__DIR__ . '/myfakestub.php');
46?>
47--EXPECTF--
48bool(true)
49bool(false)
50bool(true)
51string(5) "Hello"
52string(%d) "<?php var_dump("First"); Phar::mapPhar("phar_begin_setstub_commit.phar"); __HALT_COMPILER(); ?>
53"
54string(5) "World"
55string(%d) "<?php var_dump("Second"); Phar::mapPhar("phar_begin_setstub_commit.phar"); __HALT_COMPILER(); ?>
56"
57===COMMIT===
58bool(false)
59string(5) "Hello"
60string(5) "World"
61string(%d) "<?php var_dump("Second"); Phar::mapPhar("phar_begin_setstub_commit.phar"); __HALT_COMPILER(); ?>
62"
63string(%d) "<?php var_dump("First resource"); Phar::mapPhar("phar_begin_setstub_commit.phar"); __HALT_COMPILER(); ?>
64"
65string(%d) "<?php var_dump("First resource"); Phar::mapPhar("phar_begin_setstub_commit.phar"); __HALT_COMPILER(); ?>
66"
67