@ 2015-12-30T22:20:07Z <?php
abstract class WorkUnitDataType {
//==============================================
// consts / vars
//==============================================
const NoneDataType = 0;
const BoolDataType = 1;
const StringDataType = 2;
const ArrayDataType = 3;
const JsonDataType = 4;
const UrlDataType = 5;
const FileDataType = 6;
private $value;
private $name;
//==============================================
// construct
//==============================================
protected function __construct() {
$this->setByName(get_class($this));
}
protected function setByValue($value) {
if (is_int($value)) {
$this->value = $value;
$this->name = WorkUnitDataType::getNameFromValue($value);
}
}
protected function setByName($name) {
if (is_string($name)) {
$this->value = WorkUnitDataType::getValueFromName($name);
$this->name = $name;
}
}
//==============================================
// accessing
//==============================================
public function toString() {
return $this->name;
}
public function toValue() {
return $this->value;
}
//==============================================
// convenience
//==============================================
public static function NoneDataType() { return new NoneDataType();}
public static function BoolDataType() { return new BoolDataType();}
public static function StringDataType() { return new StringDataType();}
public static function ArrayDataType() { return new ArrayDataType();}
public static function JsonDataType() { return new JsonDataType();}
public static function UrlDataType() { return new UrlDataType();}
public static function FileDataType() { return new FileDataType();}
//==============================================
// utility
//==============================================
public static function getNameFromValue($const) {
$class = new ReflectionClass('WorkUnitDataType');
$constants = $class->getConstants();
foreach ($constants as $name => $value) {
if ($value == $const) {
return $name;
}
}
return Null;
}
public static function getValueFromName($text) {
$class = new ReflectionClass('WorkUnitDataType');
$constants = $class->getConstants();
foreach ($constants as $name => $value) {
if ($name == $text) {
return $value;
}
}
return -1;
}
}
class NoneDataType extends WorkUnitDataType {}
class BoolDataType extends WorkUnitDataType {}
class StringDataType extends WorkUnitDataType {}
class ArrayDataType extends WorkUnitDataType {}
class JsonDataType extends WorkUnitDataType {}
class UrlDataType extends WorkUnitDataType {}
class FileDataType extends WorkUnitDataType {}
$a = WorkUnitDataType::NoneDataType();
var_dump($a);
echo "\n\n";
echo $a->toString() . "\n";
echo $a->toValue() . "\n";
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 5.5.0 - 5.5.38 , 5.6.0 - 5.6.38 , 7.0.0 - 7.0.33 , 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.18 , 8.3.0 - 8.3.4 , 8.3.6 object(NoneDataType)#1 (2) {
["value":"WorkUnitDataType":private]=>
int(0)
["name":"WorkUnitDataType":private]=>
string(12) "NoneDataType"
}
NoneDataType
0
Output for 8.3.5 Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
object(NoneDataType)#1 (2) {
["value":"WorkUnitDataType":private]=>
int(0)
["name":"WorkUnitDataType":private]=>
string(12) "NoneDataType"
}
NoneDataType
0
preferences:dark mode live preview
220.73 ms | 402 KiB | 293 Q