1--TEST-- 2Ensure plain userspace superclass does not override special iterator behaviour on child class. 3--FILE-- 4<?php 5Class C {} 6 7class D extends C implements Iterator { 8 9 private $counter = 2; 10 11 public function valid(): bool { 12 echo __METHOD__ . "($this->counter)\n"; 13 return $this->counter; 14 } 15 16 public function next(): void { 17 $this->counter--; 18 echo __METHOD__ . "($this->counter)\n"; 19 } 20 21 public function rewind(): void { 22 echo __METHOD__ . "($this->counter)\n"; 23 } 24 25 public function current(): mixed { 26 echo __METHOD__ . "($this->counter)\n"; 27 return null; 28 } 29 30 public function key(): mixed { 31 echo __METHOD__ . "($this->counter)\n"; 32 return ""; 33 } 34 35} 36 37foreach (new D as $x) {} 38?> 39--EXPECT-- 40D::rewind(2) 41D::valid(2) 42D::current(2) 43D::next(1) 44D::valid(1) 45D::current(1) 46D::next(0) 47D::valid(0) 48