1010 */
1111class StateRegistry
1212{
13- private static array $ stateClasses = [];
13+ /**
14+ * @var array<string, ResourceState>
15+ */
16+ private array $ stateClasses = [];
1417
1518 /**
1619 * Register a state enum class.
1720 */
18- public static function register (string $ stateClass ): void
21+ public function register (string $ stateClass ): void
1922 {
2023 if (! is_subclass_of ($ stateClass , ResourceState::class)) {
21- throw new InvalidArgumentException ("State class {$ stateClass } must implement the ResourceState interface . " );
24+ throw new InvalidArgumentException ("State class {$ stateClass } must be a valid ResourceState enum . " );
2225 }
2326
24- self :: $ stateClasses [] = $ stateClass ;
27+ $ this -> stateClasses [] = $ stateClass ;
2528 }
2629
2730 /**
2831 * Try to find a state by value across all registered state classes.
2932 */
30- public static function tryFrom (string $ value ): ?ResourceState
33+ public function tryFrom (string $ value ): ?ResourceState
3134 {
32- foreach (self :: $ stateClasses as $ stateClass ) {
35+ foreach ($ this -> stateClasses as $ stateClass ) {
3336 $ state = $ stateClass ::tryFrom ($ value );
3437 if ($ state !== null ) {
3538 return $ state ;
@@ -42,9 +45,9 @@ public static function tryFrom(string $value): ?ResourceState
4245 /**
4346 * Find a state by value across all registered state classes.
4447 */
45- public static function from (string $ value ): ResourceState
48+ public function from (string $ value ): ResourceState
4649 {
47- $ state = self :: tryFrom ($ value );
50+ $ state = $ this -> tryFrom ($ value );
4851
4952 if ($ state === null ) {
5053 throw new InvalidArgumentException ("Unknown state: {$ value }" );
@@ -56,10 +59,10 @@ public static function from(string $value): ResourceState
5659 /**
5760 * Get all available states from all registered classes.
5861 */
59- public static function all (): array
62+ public function all (): array
6063 {
6164 $ states = [];
62- foreach (self :: $ stateClasses as $ stateClass ) {
65+ foreach ($ this -> stateClasses as $ stateClass ) {
6366 $ states = array_merge ($ states , $ stateClass ::cases ());
6467 }
6568
@@ -69,8 +72,8 @@ public static function all(): array
6972 /**
7073 * Clear all registered state classes.
7174 */
72- public static function clear (): void
75+ public function clear (): void
7376 {
74- self :: $ stateClasses = [];
77+ $ this -> stateClasses = [];
7578 }
7679}
0 commit comments