Skip to content

Commit 5a10bc6

Browse files
committed
Performance optimisation on store singleton instances
1 parent c973718 commit 5a10bc6

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

src/MabeEnum/Enum.php

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ final public function getOrdinal()
109109
// detect ordinal
110110
$ordinal = 0;
111111
$value = $this->value;
112-
foreach ($this::getConstants() as $constValue) {
112+
foreach (static::getConstants() as $constValue) {
113113
if ($value === $constValue) {
114114
break;
115115
}
@@ -131,13 +131,12 @@ final public function getOrdinal()
131131
final static public function get($value)
132132
{
133133
$class = get_called_class();
134-
$id = $class . '.' . $value;
135-
if (isset(self::$instances[$id])) {
136-
return self::$instances[$id];
134+
if (isset(self::$instances[$class][$value])) {
135+
return self::$instances[$class][$value];
137136
}
138137

139138
$instance = new $class($value);
140-
self::$instances[$id] = $instance;
139+
self::$instances[$class][$value] = $instance;
141140
return $instance;
142141
}
143142

@@ -193,11 +192,9 @@ final static public function clear()
193192
$class = get_called_class();
194193

195194
// clear instantiated enums
196-
$prefix = $class . '.';
197-
$prefixLength = strlen($prefix);
198-
foreach (self::$instances as $id => $enum) {
199-
if (strncasecmp($prefix, $id, $prefixLength) === 0) {
200-
unset(self::$instances[$id]);
195+
foreach (self::$instances as $instanceClass => $enum) {
196+
if (strcasecmp($class, $instanceClass) === 0) {
197+
unset(self::$instances[$instanceClass]);
201198
}
202199
}
203200

0 commit comments

Comments
 (0)