3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Animal { protected $color; protected $length; private function __construct(){} public static function fromLength($length) { $animal = new self(); $animal->length = $length; return $animal; } public static function fromColor($color) { $animal = new static(); $animal->color = $color; return $animal; } } class Dog extends Animal { } class Snake extends Animal { } $myAnimal = Animal::fromColor('red'); $mySnake = Snake::fromLength(10); $myDog = Dog::fromColor('brown'); var_dump($myAnimal); var_dump($mySnake); var_dump($myDog);

preferences:
28.95 ms | 402 KiB | 5 Q