]> granicus.if.org Git - php/commitdiff
Revert "Fix #79065: DOM classes do not expose properties to Reflection"
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 28 Apr 2020 13:09:41 +0000 (15:09 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 28 Apr 2020 13:09:41 +0000 (15:09 +0200)
This reverts commit 6bc8f7e5a9949b2ba79376abd1ed13d0b4d0ae3c.

This causes an assertion failure in PHPUnit.

NEWS
ext/dom/php_dom.c
ext/dom/tests/bug79065.phpt [deleted file]

diff --git a/NEWS b/NEWS
index 0fecf66f7f79d1e1553a48b50db1b9d32a22b1bb..ba008a7ba7f7cffca93154d1a4a91649413617c3 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -16,8 +16,6 @@ PHP                                                                        NEWS
 - DOM:
   . Fixed bug #78221 (DOMNode::normalize() doesn't remove empty text nodes).
     (cmb)
-  . Fixed bug #79065 (DOM classes do not expose properties to Reflection).
-    (cmb)
 
 - EXIF:
   . Fixed bug #79336 (ext/exif/tests/bug79046.phpt fails on Big endian arch).
index ad297ca7788fb67474786460079790f677e44927..6bc72e9f9794032a20324ced797a4c189595d822 100644 (file)
@@ -410,28 +410,6 @@ static int dom_property_exists(zval *object, zval *member, int check_empty, void
 }
 /* }}} */
 
-/* {{{ dom_get_properties */
-static HashTable *dom_get_properties(zval *object)
-{
-       dom_object *obj = Z_DOMOBJ_P(object);
-       HashTable *props = zend_std_get_properties(object);
-
-       if (obj->prop_handler != NULL) {
-               zend_string *key;
-               dom_prop_handler *hnd;
-
-               ZEND_HASH_FOREACH_STR_KEY_PTR(obj->prop_handler, key, hnd) {
-                       zval val;
-
-                       if (hnd->read_func(obj, &val) == SUCCESS) {
-                               zend_hash_update(props, key, &val);
-                       }
-               } ZEND_HASH_FOREACH_END();
-       }
-       return props;
-}
-/* }}} */
-
 static HashTable* dom_get_debug_info_helper(zval *object, int *is_temp) /* {{{ */
 {
        dom_object                      *obj = Z_DOMOBJ_P(object);
@@ -624,7 +602,6 @@ PHP_MINIT_FUNCTION(dom)
        dom_object_handlers.get_property_ptr_ptr = dom_get_property_ptr_ptr;
        dom_object_handlers.clone_obj = dom_objects_store_clone_obj;
        dom_object_handlers.has_property = dom_property_exists;
-       dom_object_handlers.get_properties = dom_get_properties;
        dom_object_handlers.get_debug_info = dom_get_debug_info;
 
        memcpy(&dom_nnodemap_object_handlers, &dom_object_handlers, sizeof(zend_object_handlers));
diff --git a/ext/dom/tests/bug79065.phpt b/ext/dom/tests/bug79065.phpt
deleted file mode 100644 (file)
index 9f3f49b..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-Bug #79065 (DOM classes do not expose properties to Reflection)
---SKIPIF--
-<?php
-if (!extension_loaded('dom')) die('skip dom extension not available');
-?>
---FILE--
-<?php
-$dom = new DOMDocument;
-$dom->loadHTML('<b>test</b>');
-var_dump(count(get_object_vars($dom)));
-
-$ro = new ReflectionObject($dom);
-var_dump(count($ro->getProperties()));
-var_dump($ro->hasProperty("textContent"));
-$rp = $ro->getProperty("textContent");
-var_dump($rp);
-var_dump($rp->getValue($dom));
-?>
---EXPECTF--
-int(35)
-int(35)
-bool(true)
-object(ReflectionProperty)#%d (2) {
-  ["name"]=>
-  string(11) "textContent"
-  ["class"]=>
-  string(11) "DOMDocument"
-}
-string(4) "test"