Annotation of embedaddon/php/ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: libxml_set_external_entity_loader() variation: resolve externals and entities
3: --SKIPIF--
4: <?php if (!extension_loaded('dom')) die('skip'); ?>
5: --FILE--
6: <?php
7: chdir(__DIR__);
8: $xml = <<<XML
9: <!DOCTYPE foo PUBLIC "-//FOO/BAR" "http://example.com/foobar">
10: <foo>bar&fooz;</foo>
11: XML;
12:
13: $dtd = <<<DTD
14: <!ELEMENT foo (#PCDATA)>
15: <!ENTITY % fooentity PUBLIC
16: "-//FOO/ENTITY"
17: "fooentity.ent">
18: %fooentity;
19: DTD;
20:
21: $entity = <<<ENT
22: <!ENTITY fooz "baz">
23: ENT;
24:
25: libxml_set_external_entity_loader(
26: function ($public, $system, $context) use($dtd,$entity){
27: static $first = true;
28: var_dump($public);
29: var_dump($system);
30: var_dump($context);
31: $f = fopen("php://temp", "r+");
32: fwrite($f, $first ? $dtd : $entity);
33: $first = false;
34: rewind($f);
35: return $f;
36: }
37: );
38:
39: $dd = new DOMDocument;
40: $dd->resolveExternals = true;
41: $r = $dd->loadXML($xml);
42: var_dump($dd->validate());
43:
44: echo "Done.\n";
45:
46: --EXPECTF--
47: string(10) "-//FOO/BAR"
48: string(25) "http://example.com/foobar"
49: array(4) {
50: ["directory"]=>
51: string(%d) "%s"
52: ["intSubName"]=>
53: string(3) "foo"
54: ["extSubURI"]=>
55: string(25) "http://example.com/foobar"
56: ["extSubSystem"]=>
57: string(10) "-//FOO/BAR"
58: }
59: string(13) "-//FOO/ENTITY"
60: string(32) "http://example.com/fooentity.ent"
61: array(4) {
62: ["directory"]=>
63: string(%d) "%s"
64: ["intSubName"]=>
65: string(3) "foo"
66: ["extSubURI"]=>
67: string(25) "http://example.com/foobar"
68: ["extSubSystem"]=>
69: string(10) "-//FOO/BAR"
70: }
71: bool(true)
72: Done.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>