Skip to content

Commit f73e964

Browse files
author
Marc Bennewitz
committed
fixes #31 improved internal EnumSet::initEnum
1 parent adcd73e commit f73e964

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

src/MabeEnum/EnumSet.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public function getFlags()
9393
*/
9494
public function attach($enum)
9595
{
96-
$this->initEnum($enum);
96+
$enum = $this->initEnum($enum);
9797
$ordinal = $enum->getOrdinal();
9898

9999
if (!($this->flags & self::UNIQUE) || !in_array($ordinal, $this->list, true)) {
@@ -112,7 +112,7 @@ public function attach($enum)
112112
*/
113113
public function contains($enum)
114114
{
115-
$this->initEnum($enum);
115+
$enum = $this->initEnum($enum);
116116
return in_array($enum->getOrdinal(), $this->list, true);
117117
}
118118

@@ -124,7 +124,7 @@ public function contains($enum)
124124
*/
125125
public function detach($enum)
126126
{
127-
$this->initEnum($enum);
127+
$enum = $this->initEnum($enum);
128128

129129
while (($index = array_search($enum->getOrdinal(), $this->list, true)) !== false) {
130130
unset($this->list[$index]);
@@ -187,20 +187,19 @@ public function count()
187187
* @return Enum
188188
* @throws InvalidArgumentException On an invalid given enum
189189
*/
190-
private function initEnum(&$enum)
190+
private function initEnum($enum)
191191
{
192192
// auto instantiate
193193
if (is_scalar($enum)) {
194194
$enumClass = $this->enumClass;
195-
$enum = $enumClass::get($enum);
196-
return;
195+
return $enumClass::get($enum);
197196
}
198197

199198
// allow only enums of the same type
200199
// (don't allow instance of)
201200
$enumClass = get_class($enum);
202201
if ($enumClass && strcasecmp($enumClass, $this->enumClass) === 0) {
203-
return;
202+
return $enum;
204203
}
205204

206205
throw new InvalidArgumentException(sprintf(

0 commit comments

Comments
 (0)