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(), );

preferences:
26.78 ms | 404 KiB | 5 Q