Say what? Where does this instance come from and what is its scope?
> By default, Enumerated Cases have no primitive equivalent. They are simply singleton objects.
So, singletons. That way you end up with more global state, with all its consequences.
> the following features of objects are not allowed on enumerations:
> Enum/Case properties
Ok, so these are objects without properties. That could solve the global state problem but at this point you may just as well skip the entire object part as I don't see why exactly it's needed for an identity check.
Also, enumerations may have static methods but the provided example says "public function" without the static modifier.