3v4l.org

run code in 300+ PHP versions simultaneously
<?php abstract class WorkUnitDataType { const NoneType = 0; const ArrayType = 1; const JsonType = 2; const UrlType = 3; const FileType = 4; private $value; private $name; protected function __construct($input) { if (is_int($input)) { $this->setByValue($input); } else if (is_string($input)) { $this->setByName($input); } } protected function setByValue($value) { if (is_int($value)) { $this->value = $value; $this->name = WorkUnitDataType::toString($value); } } protected function setByName($name) { if (is_string($name)) { $this->value = WorkUnitDataType::toValue($name); $this->name = $name; } } public static function toString($const) { $class = new ReflectionClass('WorkUnitDataType'); $constants = $class->getConstants(); foreach ($constants as $name => $value) { if ($value == $const) { return $name; } } return Null; } public static function toValue($text) { $class = new ReflectionClass('WorkUnitDataType'); $constants = $class->getConstants(); foreach ($constants as $name => $value) { if ($name == $text) { return $value; } } return -1; } } class NoneType extends WorkUnitDataType { public function __construct() { parent::__construct(get_class($this)); } } class ArrayType extends WorkUnitDataType { public function __construct() { parent::__construct(get_class($this)); } } class JsonType extends WorkUnitDataType { public function __construct() { parent::__construct(get_class($this)); } } class UrlType extends WorkUnitDataType { public function __construct() { parent::__construct(get_class($this)); } } class FileType extends WorkUnitDataType { public function __construct() { parent::__construct(get_class($this)); } } $a = new FileType(); var_dump($a);
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 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.19, 8.3.0 - 8.3.7
object(FileType)#1 (2) { ["value":"WorkUnitDataType":private]=> int(4) ["name":"WorkUnitDataType":private]=> string(8) "FileType" }

preferences:
197.3 ms | 404 KiB | 241 Q