3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Item { private $id; public function __construct(int $id) { $this->id = $id; } public function id() : int { return $this->id; } } class Collection extends IteratorIterator { public function __construct(Item ...$items) { parent::__construct( (function() use ($items) { yield from $items; })() ); } public function current() : Item { return parent::current(); } } $items = []; for ($i=0; $i<10; $i++) { $items[] = new Item($i); } $collection = new Collection(...$items); foreach ($collection as $item) { printf("\tClass: %s. Calling id() method returns %d (%s)\n", get_class($item), $item->id(), gettype($item->id())); }
Output for 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
Class: Item. Calling id() method returns 0 (integer) Class: Item. Calling id() method returns 1 (integer) Class: Item. Calling id() method returns 2 (integer) Class: Item. Calling id() method returns 3 (integer) Class: Item. Calling id() method returns 4 (integer) Class: Item. Calling id() method returns 5 (integer) Class: Item. Calling id() method returns 6 (integer) Class: Item. Calling id() method returns 7 (integer) Class: Item. Calling id() method returns 8 (integer) Class: Item. Calling id() method returns 9 (integer)
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.40
Parse error: syntax error, unexpected ':', expecting ';' or '{' in /in/YMQer on line 8
Process exited with code 255.

preferences:
231.89 ms | 402 KiB | 339 Q