Static access to Enumeration constants
To get all available constants for a
TYPO3\CMS\Core\Type\Enumeration, one has to create an instance and call the
getConstants() method. This is weird for various purposes:
- You have to rely on a
__defaultbeing defined or have to pick an arbitrary value to create the instance
- The enumeration constants are stored statically anyways so one should not need an instance to get them.
Compare the current state:
$myEnum = new MyEnum(MyEnum::VALID_VALUE); print_r($myEnum->getConstants());
With the desired state:
With PHP 5.3 the get_called_class() function was introduced which can be used here. In fact it is already used in
Enumeration::cast() and it is beyond me why not here.
To fix this, the
getConstants() method can be made static which fortunately does not break instance invocation:
A property declared as static cannot be accessed with an instantiated class object (though a static method can).
Thus the first example above will continue to work.