@@ -2147,8 +2147,13 @@ PHP_MINIT_FUNCTION(spl_iterators)
2147
2147
REGISTER_SPL_CLASS_CONST_LONG (RecursiveIteratorIterator , "CHILD_FIRST" , RIT_CHILD_FIRST );
2148
2148
REGISTER_SPL_CLASS_CONST_LONG (RecursiveIteratorIterator , "CATCH_GET_CHILD" , RIT_CATCH_GET_CHILD );
2149
2149
2150
- REGISTER_SPL_STD_CLASS_EX (FilterIterator , spl_dual_it_new , spl_funcs_FilterIterator );
2151
- REGISTER_SPL_ITERATOR (FilterIterator );
2150
+ REGISTER_SPL_INTERFACE (OuterIterator );
2151
+ REGISTER_SPL_ITERATOR (OuterIterator );
2152
+
2153
+ REGISTER_SPL_STD_CLASS_EX (IteratorIterator , spl_dual_it_new , spl_funcs_IteratorIterator );
2154
+ REGISTER_SPL_ITERATOR (IteratorIterator );
2155
+
2156
+ REGISTER_SPL_SUB_CLASS_EX (FilterIterator , IteratorIterator , spl_dual_it_new , spl_funcs_FilterIterator );
2152
2157
spl_ce_FilterIterator -> ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS ;
2153
2158
2154
2159
REGISTER_SPL_SUB_CLASS_EX (RecursiveFilterIterator , FilterIterator , spl_dual_it_new , spl_funcs_RecursiveFilterIterator );
@@ -2159,11 +2164,9 @@ PHP_MINIT_FUNCTION(spl_iterators)
2159
2164
REGISTER_SPL_INTERFACE (SeekableIterator );
2160
2165
REGISTER_SPL_ITERATOR (SeekableIterator );
2161
2166
2162
- REGISTER_SPL_STD_CLASS_EX (LimitIterator , spl_dual_it_new , spl_funcs_LimitIterator );
2163
- REGISTER_SPL_ITERATOR (LimitIterator );
2167
+ REGISTER_SPL_SUB_CLASS_EX (LimitIterator , IteratorIterator , spl_dual_it_new , spl_funcs_LimitIterator );
2164
2168
2165
- REGISTER_SPL_STD_CLASS_EX (CachingIterator , spl_dual_it_new , spl_funcs_CachingIterator );
2166
- REGISTER_SPL_ITERATOR (CachingIterator );
2169
+ REGISTER_SPL_SUB_CLASS_EX (CachingIterator , IteratorIterator , spl_dual_it_new , spl_funcs_CachingIterator );
2167
2170
2168
2171
REGISTER_SPL_CLASS_CONST_LONG (CachingIterator , "CALL_TOSTRING" , CIT_CALL_TOSTRING );
2169
2172
REGISTER_SPL_CLASS_CONST_LONG (CachingIterator , "CATCH_GET_CHILD" , CIT_CATCH_GET_CHILD );
@@ -2173,25 +2176,11 @@ PHP_MINIT_FUNCTION(spl_iterators)
2173
2176
REGISTER_SPL_SUB_CLASS_EX (RecursiveCachingIterator , CachingIterator , spl_dual_it_new , spl_funcs_RecursiveCachingIterator );
2174
2177
REGISTER_SPL_IMPLEMENTS (RecursiveCachingIterator , RecursiveIterator );
2175
2178
2176
- REGISTER_SPL_STD_CLASS_EX (IteratorIterator , spl_dual_it_new , spl_funcs_IteratorIterator );
2177
- REGISTER_SPL_ITERATOR (IteratorIterator );
2178
-
2179
- REGISTER_SPL_STD_CLASS_EX (NoRewindIterator , spl_dual_it_new , spl_funcs_NoRewindIterator );
2180
- REGISTER_SPL_ITERATOR (NoRewindIterator );
2181
-
2182
- REGISTER_SPL_INTERFACE (OuterIterator );
2183
- REGISTER_SPL_ITERATOR (OuterIterator );
2179
+ REGISTER_SPL_SUB_CLASS_EX (NoRewindIterator , IteratorIterator , spl_dual_it_new , spl_funcs_NoRewindIterator );
2184
2180
2185
- REGISTER_SPL_STD_CLASS_EX (AppendIterator , spl_dual_it_new , spl_funcs_AppendIterator );
2181
+ REGISTER_SPL_SUB_CLASS_EX (AppendIterator , IteratorIterator , spl_dual_it_new , spl_funcs_AppendIterator );
2186
2182
2187
2183
REGISTER_SPL_IMPLEMENTS (RecursiveIteratorIterator , OuterIterator );
2188
- REGISTER_SPL_IMPLEMENTS (CachingIterator , OuterIterator );
2189
- REGISTER_SPL_IMPLEMENTS (FilterIterator , OuterIterator );
2190
- REGISTER_SPL_IMPLEMENTS (LimitIterator , OuterIterator );
2191
- REGISTER_SPL_IMPLEMENTS (IteratorIterator , OuterIterator );
2192
- REGISTER_SPL_IMPLEMENTS (NoRewindIterator , OuterIterator );
2193
- REGISTER_SPL_IMPLEMENTS (AppendIterator , OuterIterator );
2194
-
2195
2184
REGISTER_SPL_SUB_CLASS_EX (InfiniteIterator , IteratorIterator , spl_dual_it_new , spl_funcs_InfiniteIterator );
2196
2185
2197
2186
REGISTER_SPL_STD_CLASS_EX (EmptyIterator , NULL , spl_funcs_EmptyIterator );
0 commit comments