3v4l.org

run code in 300+ PHP versions simultaneously
<?php trait CalculatesArea { private $pi = 3.1416; private function rectangularArea(): float { return $this->a * $this->b; } private function ellipticArea(): float { return $this->a * $this->b * $this->pi; } } abstract class Shape { use CalculatesArea; public function __construct(protected float $a, protected float $b) {} public function area(): ?float { if ($this instanceof Rectangle) { return $this->rectangularArea(); } if ($this instanceof Ellipse) { return $this->ellipticArea(); } return null; } } class Rectangle extends Shape {} class Ellipse extends Shape {} var_dump( (new Rectangle(3, 4))->area(), (new Ellipse(1.3, 3.8))->area(), );
Output for 8.1.23 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
float(12) float(15.519503999999998)

preferences:
81.97 ms | 406 KiB | 5 Q