From: Nikita Popov Date: Thu, 13 Aug 2020 12:39:38 +0000 (+0200) Subject: Use a dedicated method for MultipleIterator::countIterators() X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f3d6203b0b83d2167f083616caf462eda1231d8f;p=php Use a dedicated method for MultipleIterator::countIterators() This method has a different signature from SplObjectStorage::count(), so don't share implementations. --- diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c index f38f5bcdda..eaad4db815 100644 --- a/ext/spl/spl_observer.c +++ b/ext/spl/spl_observer.c @@ -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) { diff --git a/ext/spl/spl_observer.stub.php b/ext/spl/spl_observer.stub.php index 9bb868ebe7..f3f4aab843 100644 --- a/ext/spl/spl_observer.stub.php +++ b/ext/spl/spl_observer.stub.php @@ -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 */ diff --git a/ext/spl/spl_observer_arginfo.h b/ext/spl/spl_observer_arginfo.h index 9bd54867e1..4d7b2b1dde 100644 --- a/ext/spl/spl_observer_arginfo.h +++ b/ext/spl/spl_observer_arginfo.h @@ -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)