3v4l.org

run code in 300+ PHP versions simultaneously
<?php declare(strict_types = 1); namespace App { class Product { private $id; private $name; private $volumes; /** * Product constructor. * @param int $id * @param string $name * @param array $volumes * @throws \InvalidArgumentException */ public function __construct(int $id, string $name, array $volumes) { $this->id = $id; $this->name = $name; if (count($volumes) === 0) { throw new \InvalidArgumentException('Your product must have 1 product at least.'); } $this->volumes = $this->prepareVolumes($volumes); } private function prepareVolumes(array $volumes) { foreach ($volumes as $volume) { $volume->setProduct($this); } return $volumes; } } class Volume { protected $id; protected $product; protected $description; public function __construct(string $description) { $this->description = $description; } public function setProduct(Product $product) { $this->product = $product; } } class ProductTest { public function __construct() { $volume1 = new Volume('part-1'); $volume2 = new Volume('part-2'); $volume3 = new Volume('part-3'); $product = new Product(1, 'BED', [$volume1, $volume2, $volume3]); $invalidProduct = new Product(2, 'Table', []); } } return new ProductTest(); }
Output for git.master_jit, git.master, rfc.property-hooks
Fatal error: Uncaught InvalidArgumentException: Your product must have 1 product at least. in /in/t7JqO:25 Stack trace: #0 /in/t7JqO(66): App\Product->__construct(2, 'Table', Array) #1 /in/t7JqO(70): App\ProductTest->__construct() #2 {main} thrown in /in/t7JqO on line 25
Process exited with code 255.

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
32.39 ms | 406 KiB | 5 Q