- var_dump: documentation ( source)
- constant: documentation ( source)
<?php
abstract class EnumerationBase
{
const NONE = null;
/**
*
* @var mixed
*/
private $value;
/**
*
* @param type $name
* @param array $argumentArray
* @return EnumerationBase
*/
final public static function __callStatic($name, array $argumentArray)
{
return new static(constant("static::{$name}"));
}
/**
*
* @param object $value
*/
final private function __construct($value)
{
$this->value = $value;
}
final private function __clone()
{
;
}
/**
*
* @param EnumerationBase $enumeration
* @return bool
*/
final public function isEqualTo(EnumerationBase $enumeration)
{
return ($this instanceof $enumeration) && ($this->value === $enumeration->value);
}
}
/**
*
* @method FooEnumeration ONE()
* @method FooEnumeration TWO()
*/
final class FooEnumeration extends EnumerationBase
{
const ONE = 1;
const TWO = 2;
}
/**
*
* @method BarEnumeration ONE()
* @method BarEnumeration TWO()
*/
final class BarEnumeration extends EnumerationBase
{
const ONE = 1;
const TWO = 2;
}
var_dump(FooEnumeration::ONE()->isEqualTo(FooEnumeration::ONE()));
var_dump(true);
echo '----------------' . PHP_EOL;
var_dump(FooEnumeration::ONE()->isEqualTo(FooEnumeration::TWO()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(FooEnumeration::TWO()->isEqualTo(FooEnumeration::ONE()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(FooEnumeration::TWO()->isEqualTo(FooEnumeration::TWO()));
var_dump(true);
echo '----------------' . PHP_EOL;
var_dump(FooEnumeration::ONE()->isEqualTo(BarEnumeration::ONE()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(FooEnumeration::ONE()->isEqualTo(BarEnumeration::TWO()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(FooEnumeration::TWO()->isEqualTo(BarEnumeration::ONE()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(FooEnumeration::TWO()->isEqualTo(BarEnumeration::TWO()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(BarEnumeration::ONE()->isEqualTo(FooEnumeration::ONE()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(BarEnumeration::ONE()->isEqualTo(FooEnumeration::TWO()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(BarEnumeration::TWO()->isEqualTo(FooEnumeration::ONE()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(BarEnumeration::TWO()->isEqualTo(FooEnumeration::TWO()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(BarEnumeration::ONE()->isEqualTo(BarEnumeration::ONE()));
var_dump(true);
echo '----------------' . PHP_EOL;
var_dump(BarEnumeration::ONE()->isEqualTo(BarEnumeration::TWO()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(BarEnumeration::TWO()->isEqualTo(BarEnumeration::ONE()));
var_dump(false);
echo '----------------' . PHP_EOL;
var_dump(BarEnumeration::TWO()->isEqualTo(BarEnumeration::TWO()));
var_dump(true);
echo '----------------' . PHP_EOL;