| 
        php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
 Patch simplexml_countable.patch for SimpleXML related Bug #65215Patch version 2013-07-07 05:24 UTC Return to Bug #65215 | Download this patchThis patch renders other patches obsolete Obsolete patches: Patch Revisions:Developer: ww.galen@gmail.com
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c
index e7c2f29..1238ad0 100644
--- a/ext/simplexml/simplexml.c
+++ b/ext/simplexml/simplexml.c
@@ -35,6 +35,9 @@
 #include "zend_exceptions.h"
 #include "zend_interfaces.h"
 #include "sxe.h"
+#if defined(HAVE_SPL)
+#  include "ext/spl/spl_iterators.h"
+#endif
 
 #define SXE_ELEMENT_BY_NAME 0
 
@@ -2622,6 +2625,9 @@ PHP_MINIT_FUNCTION(simplexml)
 	sxe_class_entry->get_iterator = php_sxe_get_iterator;
 	sxe_class_entry->iterator_funcs.funcs = &php_sxe_iterator_funcs;
 	zend_class_implements(sxe_class_entry TSRMLS_CC, 1, zend_ce_traversable);
+#if defined(HAVE_SPL)
+	zend_class_implements(sxe_class_entry TSRMLS_CC, 1, spl_ce_Countable);
+#endif
 	sxe_object_handlers.get_method = zend_get_std_object_handlers()->get_method;
 	sxe_object_handlers.get_constructor = zend_get_std_object_handlers()->get_constructor;
 	sxe_object_handlers.get_class_entry = zend_get_std_object_handlers()->get_class_entry;
diff --git a/ext/simplexml/tests/countable.phpt b/ext/simplexml/tests/countable.phpt
new file mode 100644
index 0000000..7df718a
--- /dev/null
+++ b/ext/simplexml/tests/countable.phpt
@@ -0,0 +1,28 @@
+--TEST--
+SimpleXML: Countable
+--SKIPIF--
+<?php
+if (!extension_loaded("simplexml")) print "skip";
+if (!extension_loaded('SPL')) print "skip SPL not present";
+?>
+--FILE--
+<?php
+$xml =<<<EOF
+<?xml version='1.0'?>
+<!DOCTYPE sxe SYSTEM "notfound.dtd">
+<a>
+  <b/>
+  <b/>
+</a>
+EOF;
+
+$sxe = new SimpleXMLElement($xml);
+var_dump(
+  $sxe instanceof Countable,
+  count($sxe)
+);
+===DONE===
+--EXPECTF--
+bool(true)
+int(2)
+===DONE===
         | 
    
            
                 
                Copyright © 2001-2025 The PHP GroupAll rights reserved.  | 
        Last updated: Tue Nov 04 15:00:01 2025 UTC |