]> granicus.if.org Git - php/commitdiff
Use a dedicated method for MultipleIterator::countIterators()
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 13 Aug 2020 12:39:38 +0000 (14:39 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 13 Aug 2020 12:44:03 +0000 (14:44 +0200)
This method has a different signature from
SplObjectStorage::count(), so don't share implementations.

ext/spl/spl_observer.c
ext/spl/spl_observer.stub.php
ext/spl/spl_observer_arginfo.h

index f38f5bcddac8178a9dffac656d209ea8bff800cf..eaad4db815c115ec396709e8789906b7509b7b65 100644 (file)
@@ -993,6 +993,17 @@ PHP_METHOD(MultipleIterator, containsIterator)
        RETURN_BOOL(spl_object_storage_contains(intern, iterator));
 } /* }}} */
 
+PHP_METHOD(MultipleIterator, countIterators)
+{
+       spl_SplObjectStorage *intern = Z_SPLOBJSTORAGE_P(ZEND_THIS);
+
+       if (zend_parse_parameters_none() == FAILURE) {
+               RETURN_THROWS();
+       }
+
+       RETURN_LONG(zend_hash_num_elements(&intern->storage));
+}
+
 /* {{{ Rewind all attached iterator instances */
 PHP_METHOD(MultipleIterator, rewind)
 {
index 9bb868ebe7dc03da15a95b7764746b4ef21a8a79..f3f4aab843a4e1d3866cc7b7a4ed998ff57cb084 100644 (file)
@@ -140,10 +140,7 @@ class MultipleIterator implements Iterator
     /** @return bool */
     public function containsIterator(Iterator $iterator) {}
 
-    /**
-     * @return int
-     * @alias SplObjectStorage::count
-     */
+    /** @return int */
     public function countIterators() {}
 
     /** @return void */
index 9bd54867e1ae22e2a9119404b2e4a6b0529a72b4..4d7b2b1ddeceaad857318f11647ea21eb1b6c961 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 22aaae107ec0c1c81a3f7135ffd7d22507437c57 */
+ * Stub hash: 4a31f2cc1b0c874f1256aef60afbd285dbe6c078 */
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplObserver_update, 0, 0, 1)
        ZEND_ARG_OBJ_INFO(0, subject, SplSubject, 0)
@@ -145,6 +145,7 @@ ZEND_METHOD(MultipleIterator, setFlags);
 ZEND_METHOD(MultipleIterator, attachIterator);
 ZEND_METHOD(MultipleIterator, detachIterator);
 ZEND_METHOD(MultipleIterator, containsIterator);
+ZEND_METHOD(MultipleIterator, countIterators);
 ZEND_METHOD(MultipleIterator, rewind);
 ZEND_METHOD(MultipleIterator, valid);
 ZEND_METHOD(MultipleIterator, key);
@@ -202,7 +203,7 @@ static const zend_function_entry class_MultipleIterator_methods[] = {
        ZEND_ME(MultipleIterator, attachIterator, arginfo_class_MultipleIterator_attachIterator, ZEND_ACC_PUBLIC)
        ZEND_ME(MultipleIterator, detachIterator, arginfo_class_MultipleIterator_detachIterator, ZEND_ACC_PUBLIC)
        ZEND_ME(MultipleIterator, containsIterator, arginfo_class_MultipleIterator_containsIterator, ZEND_ACC_PUBLIC)
-       ZEND_MALIAS(SplObjectStorage, countIterators, count, arginfo_class_MultipleIterator_countIterators, ZEND_ACC_PUBLIC)
+       ZEND_ME(MultipleIterator, countIterators, arginfo_class_MultipleIterator_countIterators, ZEND_ACC_PUBLIC)
        ZEND_ME(MultipleIterator, rewind, arginfo_class_MultipleIterator_rewind, ZEND_ACC_PUBLIC)
        ZEND_ME(MultipleIterator, valid, arginfo_class_MultipleIterator_valid, ZEND_ACC_PUBLIC)
        ZEND_ME(MultipleIterator, key, arginfo_class_MultipleIterator_key, ZEND_ACC_PUBLIC)