<?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