3v4l.org

run code in 300+ PHP versions simultaneously
<?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;

preferences:
52.47 ms | 402 KiB | 5 Q