]> granicus.if.org Git - php/commitdiff
SimpleXMLElement and ResourceBundle implement Countable
authorThomas Gerbet <thomas.gerbet@enalean.com>
Wed, 29 May 2019 14:45:10 +0000 (16:45 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Fri, 31 May 2019 16:59:19 +0000 (18:59 +0200)
Both classes already have a count() method and are considered
countable by \is_countable().

NEWS
UPGRADING
ext/intl/resourcebundle/resourcebundle_class.c
ext/intl/tests/resourcebundle_countable.phpt [new file with mode: 0644]
ext/simplexml/simplexml.c
ext/simplexml/tests/037.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 49b55ee37507a446bd5d93a36b7fcf3d31c18bdf..9b0f6c3f598c030f341881fdc866983716fb1868 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -74,6 +74,7 @@ PHP                                                                        NEWS
 
 - Intl:
   . Raised requirements to ICU ≥ 50.1. (cmb)
+  . Changed ResourceBundle to implement Countable. (LeSuisse)
   . Changed default of $variant parameter of idn_to_ascii() and idn_to_utf8().
     (cmb)
 
@@ -121,6 +122,10 @@ PHP                                                                        NEWS
     (krakjoe)
   . Fixed bug #77805 (phpdbg build fails when readline is shared). (krakjoe)
 
+- SimpleXML:
+  . Implemented FR #65215 (SimpleXMLElement could register as implementing
+    Countable). (LeSuisse)
+
 - Sockets:
   . Fixed bug #67619 (Validate length on socket_write). (thiagooak)
 
index e9201f24d49f41f61278da6430c9c5ee093ac760..a2ef40c716320dd9cc63e7c9b31c337d469e7edb 100644 (file)
--- a/UPGRADING
+++ b/UPGRADING
@@ -402,6 +402,7 @@ PHP 7.4 UPGRADE NOTES
 
 - Intl:
   . The Intl extension now requires at least ICU 50.1.
+  . ResourceBundle now implements Countable.
 
 - Libxml:
   . All libxml based extensions now require libxml 2.7.6 or newer.
@@ -422,6 +423,9 @@ PHP 7.4 UPGRADE NOTES
     results of Reflection...::getModifiers(), using hard-coded numeric values.
     Use corresponding constants instead (e.g. ReflectionMethod::IS_PUBLIC).
 
+- SimpleXML:
+  . SimpleXMLElement now implements Countable.
+
 - SQLite3:
   . The bundled libsqlite has been removed.  To build the SQLite3 extension
     a system libsqlite3 ≥ 3.7.4 is now required. To build the PDO_SQLite
index 2feb6edb1374eec85391d6e3ceef9f97994873b9..0f63109eca218cbaefd47ef894a51980abf0deb3 100644 (file)
@@ -455,6 +455,6 @@ void resourcebundle_register_class( void )
        ResourceBundle_object_handlers.read_dimension = resourcebundle_array_get;
        ResourceBundle_object_handlers.count_elements = resourcebundle_array_count;
 
-       zend_class_implements(ResourceBundle_ce_ptr, 1, zend_ce_traversable);
+       zend_class_implements(ResourceBundle_ce_ptr, 2, zend_ce_traversable, zend_ce_countable);
 }
 /* }}} */
diff --git a/ext/intl/tests/resourcebundle_countable.phpt b/ext/intl/tests/resourcebundle_countable.phpt
new file mode 100644 (file)
index 0000000..bacc18f
--- /dev/null
@@ -0,0 +1,14 @@
+--TEST--
+Test ResourceBundle implements Countable
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--FILE--
+<?php
+       include "resourcebundle.inc";
+
+       $r = new ResourceBundle( 'es', BUNDLE );
+
+       var_dump($r instanceof Countable);
+?>
+--EXPECT--
+bool(true)
index 8077fba77d2206b7c3740a4ae75ceb1368b1cc6f..fb55b6b195a0913ec3198544aacc6702475c3096 100644 (file)
@@ -2686,7 +2686,7 @@ PHP_MINIT_FUNCTION(simplexml)
        sxe.create_object = sxe_object_new;
        sxe_class_entry = zend_register_internal_class(&sxe);
        sxe_class_entry->get_iterator = php_sxe_get_iterator;
-       zend_class_implements(sxe_class_entry, 1, zend_ce_traversable);
+       zend_class_implements(sxe_class_entry, 2, zend_ce_traversable, zend_ce_countable);
 
        memcpy(&sxe_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
        sxe_object_handlers.offset = XtOffsetOf(php_sxe_object, zo);
diff --git a/ext/simplexml/tests/037.phpt b/ext/simplexml/tests/037.phpt
new file mode 100644 (file)
index 0000000..7a14165
--- /dev/null
@@ -0,0 +1,15 @@
+--TEST--
+SimpleXML: implement Countable
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+--FILE--
+<?php
+
+$str = '<xml></xml>';
+$sxe = new SimpleXmlElement($str);
+var_dump($sxe instanceof Countable);
+?>
+==Done==
+--EXPECT--
+bool(true)
+==Done==