Skip to content

Commit 731393b

Browse files
committed
refactor: static analysis updates and plenty of enum changes
Signed-off-by: Tom Carrio <[email protected]>
1 parent a80fdb1 commit 731393b

23 files changed

+164
-177
lines changed

Diff for: integration/features/bootstrap/FeatureContext.php

+26-26
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public function aProviderIsRegisteredWithCacheDisabled()
8282
*/
8383
public function aBooleanFlagWithKeyIsEvaluatedWithDefaultValue(string $flagKey, bool $defaultValue)
8484
{
85-
$this->flagType = FlagValueType::BOOLEAN;
85+
$this->flagType = FlagValueType::Boolean;
8686
$this->inputFlagKey = $flagKey;
8787
$this->inputFlagDefaultValue = $defaultValue;
8888
}
@@ -103,7 +103,7 @@ public function theResolvedBooleanValueShouldBe(bool $resolvedValue)
103103
*/
104104
public function aStringFlagWithKeyIsEvaluatedWithDefaultValue(string $flagKey, string $defaultValue)
105105
{
106-
$this->flagType = FlagValueType::STRING;
106+
$this->flagType = FlagValueType::String;
107107
$this->inputFlagKey = $flagKey;
108108
$this->inputFlagDefaultValue = $defaultValue;
109109
}
@@ -124,7 +124,7 @@ public function theResolvedStringValueShouldBe(string $resolvedValue)
124124
*/
125125
public function anIntegerFlagWithKeyIsEvaluatedWithDefaultValue(string $flagKey, int $defaultValue)
126126
{
127-
$this->flagType = FlagValueType::INTEGER;
127+
$this->flagType = FlagValueType::Integer;
128128
$this->inputFlagKey = $flagKey;
129129
$this->inputFlagDefaultValue = $defaultValue;
130130
print_r("Setting integer...\n");
@@ -146,7 +146,7 @@ public function theResolvedIntegerValueShouldBe(int $resolvedValue)
146146
*/
147147
public function aFloatFlagWithKeyIsEvaluatedWithDefaultValue(string $flagKey, float $defaultValue)
148148
{
149-
$this->flagType = FlagValueType::FLOAT;
149+
$this->flagType = FlagValueType::Float;
150150
$this->inputFlagKey = $flagKey;
151151
$this->inputFlagDefaultValue = $defaultValue;
152152
}
@@ -167,7 +167,7 @@ public function theResolvedFloatValueShouldBe(float $resolvedValue)
167167
*/
168168
public function anObjectFlagWithKeyIsEvaluatedWithANullDefaultValue(string $flagKey, mixed $defaultValue)
169169
{
170-
$this->flagType = FlagValueType::OBJECT;
170+
$this->flagType = FlagValueType::Object;
171171
$this->inputFlagKey = $flagKey;
172172
$this->inputFlagDefaultValue = $defaultValue;
173173
}
@@ -192,7 +192,7 @@ public function theResolvedObjectValueShouldBeContainFieldsAndWithValuesAndRespe
192192
*/
193193
public function aBooleanFlagWithKeyIsEvaluatedWithDetailsAndDefaultValue(string $flagKey, bool $defaultValue)
194194
{
195-
$this->flagType = FlagValueType::BOOLEAN;
195+
$this->flagType = FlagValueType::Boolean;
196196
$this->inputFlagKey = $flagKey;
197197
$this->inputFlagDefaultValue = $defaultValue;
198198
}
@@ -214,7 +214,7 @@ public function theResolvedBooleanDetailsValueShouldBeTheVariantShouldBeAndTheRe
214214
*/
215215
public function aStringFlagWithKeyIsEvaluatedWithDetailsAndDefaultValue(string $flagKey, string $defaultValue)
216216
{
217-
$this->flagType = FlagValueType::STRING;
217+
$this->flagType = FlagValueType::String;
218218
$this->inputFlagKey = $flagKey;
219219
$this->inputFlagDefaultValue = $defaultValue;
220220
}
@@ -236,7 +236,7 @@ public function theResolvedStringDetailsValueShouldBeTheVariantShouldBeAndTheRea
236236
*/
237237
public function anIntegerFlagWithKeyIsEvaluatedWithDetailsAndDefaultValue(string $flagKey, int $defaultValue)
238238
{
239-
$this->flagType = FlagValueType::INTEGER;
239+
$this->flagType = FlagValueType::Integer;
240240
$this->inputFlagKey = $flagKey;
241241
$this->inputFlagDefaultValue = $defaultValue;
242242
}
@@ -258,7 +258,7 @@ public function theResolvedIntegerDetailsValueShouldBeTheVariantShouldBeAndTheRe
258258
*/
259259
public function aFloatFlagWithKeyIsEvaluatedWithDetailsAndDefaultValue(string $flagKey, float $defaultValue)
260260
{
261-
$this->flagType = FlagValueType::FLOAT;
261+
$this->flagType = FlagValueType::Float;
262262
$this->inputFlagKey = $flagKey;
263263
$this->inputFlagDefaultValue = $defaultValue;
264264
}
@@ -280,7 +280,7 @@ public function theResolvedFloatDetailsValueShouldBeTheVariantShouldBeAndTheReas
280280
*/
281281
public function anObjectFlagWithKeyIsEvaluatedWithDetailsAndANullDefaultValue(string $flagKey, mixed $defaultValue)
282282
{
283-
$this->flagType = FlagValueType::OBJECT;
283+
$this->flagType = FlagValueType::Object;
284284
$this->inputFlagKey = $flagKey;
285285
$this->inputFlagDefaultValue = $defaultValue;
286286
}
@@ -409,7 +409,7 @@ public function theReasonShouldIndicateAnErrorAndTheErrorCodeShouldIndicateAMiss
409409
*/
410410
public function aStringFlagWithKeyIsEvaluatedAsAnIntegerWithDetailsAndADefaultValue(string $flagKey, int $defaultValue)
411411
{
412-
$this->flagType = FlagValueType::INTEGER;
412+
$this->flagType = FlagValueType::Integer;
413413
$this->inputFlagKey = $flagKey;
414414
$this->inputFlagDefaultValue = $defaultValue;
415415
}
@@ -447,23 +447,23 @@ private function calculateValue()
447447
{
448448
$value = null;
449449
switch ($this->flagType) {
450-
case FlagValueType::BOOLEAN:
450+
case FlagValueType::Boolean:
451451
$value = $this->client->getBooleanValue($this->inputFlagKey, $this->inputFlagDefaultValue, $this->inputContext, $this->inputOptions);
452452

453453
break;
454-
case FlagValueType::FLOAT:
454+
case FlagValueType::Float:
455455
$value = $this->client->getFloatValue($this->inputFlagKey, $this->inputFlagDefaultValue, $this->inputContext, $this->inputOptions);
456456

457457
break;
458-
case FlagValueType::INTEGER:
458+
case FlagValueType::Integer:
459459
$value = $this->client->getIntegerValue($this->inputFlagKey, $this->inputFlagDefaultValue, $this->inputContext, $this->inputOptions);
460460

461461
break;
462-
case FlagValueType::OBJECT:
462+
case FlagValueType::Object:
463463
$value = $this->client->getObjectValue($this->inputFlagKey, $this->inputFlagDefaultValue, $this->inputContext, $this->inputOptions);
464464

465465
break;
466-
case FlagValueType::STRING:
466+
case FlagValueType::String:
467467
$value = $this->client->getStringValue($this->inputFlagKey, $this->inputFlagDefaultValue, $this->inputContext, $this->inputOptions);
468468

469469
break;
@@ -479,23 +479,23 @@ private function calculateDetails(): EvaluationDetails
479479
{
480480
$details = null;
481481
switch ($this->flagType) {
482-
case FlagValueType::BOOLEAN:
482+
case FlagValueType::Boolean:
483483
$details = $this->client->getBooleanDetails($this->inputFlagKey, $this->inputFlagDefaultValue, $this->inputContext, $this->inputOptions);
484484

485485
break;
486-
case FlagValueType::FLOAT:
486+
case FlagValueType::Float:
487487
$details = $this->client->getFloatDetails($this->inputFlagKey, $this->inputFlagDefaultValue, $this->inputContext, $this->inputOptions);
488488

489489
break;
490-
case FlagValueType::INTEGER:
490+
case FlagValueType::Integer:
491491
$details = $this->client->getIntegerDetails($this->inputFlagKey, $this->inputFlagDefaultValue, $this->inputContext, $this->inputOptions);
492492

493493
break;
494-
case FlagValueType::OBJECT:
494+
case FlagValueType::Object:
495495
$details = $this->client->getObjectDetails($this->inputFlagKey, $this->inputFlagDefaultValue, $this->inputContext, $this->inputOptions);
496496

497497
break;
498-
case FlagValueType::STRING:
498+
case FlagValueType::String:
499499
$details = $this->client->getStringDetails($this->inputFlagKey, $this->inputFlagDefaultValue, $this->inputContext, $this->inputOptions);
500500

501501
break;
@@ -518,23 +518,23 @@ private function setFlagTypeIfNullByValue(mixed $value): void
518518
private function getFlagTypeOf(mixed $value): ?string
519519
{
520520
if (is_string($value)) {
521-
return FlagValueType::STRING;
521+
return FlagValueType::String;
522522
}
523523

524524
if (is_array($value)) {
525-
return FlagValueType::OBJECT;
525+
return FlagValueType::Object;
526526
}
527527

528528
if (is_float($value)) {
529-
return FlagValueType::FLOAT;
529+
return FlagValueType::Float;
530530
}
531531

532532
if (is_int($value)) {
533-
return FlagValueType::INTEGER;
533+
return FlagValueType::Integer;
534534
}
535535

536536
if (is_bool($value)) {
537-
return FlagValueType::BOOLEAN;
537+
return FlagValueType::Boolean;
538538
}
539539
}
540540

Diff for: src/OpenFeatureClient.php

+32-28
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use DateTime;
88
use OpenFeature\implementation\common\Metadata;
99
use OpenFeature\implementation\common\ValueTypeValidator;
10-
use OpenFeature\implementation\errors\FlagValueTypeError;
1110
use OpenFeature\implementation\errors\InvalidResolutionValueError;
1211
use OpenFeature\implementation\flags\EvaluationContext;
1312
use OpenFeature\implementation\flags\EvaluationDetailsBuilder;
@@ -142,7 +141,7 @@ public function getBooleanValue(string $flagKey, bool $defaultValue, ?Evaluation
142141
*/
143142
public function getBooleanDetails(string $flagKey, bool $defaultValue, ?EvaluationContextInterface $context = null, ?EvaluationOptionsInterface $options = null): EvaluationDetailsInterface
144143
{
145-
return $this->evaluateFlag(FlagValueType::BOOLEAN, $flagKey, $defaultValue, $context, $options);
144+
return $this->evaluateFlag(FlagValueType::Boolean, $flagKey, $defaultValue, $context, $options);
146145
}
147146

148147
/**
@@ -171,7 +170,7 @@ public function getStringValue(string $flagKey, string $defaultValue, ?Evaluatio
171170
*/
172171
public function getStringDetails(string $flagKey, string $defaultValue, ?EvaluationContextInterface $context = null, ?EvaluationOptionsInterface $options = null): EvaluationDetailsInterface
173172
{
174-
return $this->evaluateFlag(FlagValueType::STRING, $flagKey, $defaultValue, $context, $options);
173+
return $this->evaluateFlag(FlagValueType::String, $flagKey, $defaultValue, $context, $options);
175174
}
176175

177176
/**
@@ -205,7 +204,7 @@ public function getIntegerValue(string $flagKey, int $defaultValue, ?EvaluationC
205204
*/
206205
public function getIntegerDetails(string $flagKey, int $defaultValue, ?EvaluationContextInterface $context = null, ?EvaluationOptionsInterface $options = null): EvaluationDetailsInterface
207206
{
208-
return $this->evaluateFlag(FlagValueType::INTEGER, $flagKey, $defaultValue, $context, $options);
207+
return $this->evaluateFlag(FlagValueType::Integer, $flagKey, $defaultValue, $context, $options);
209208
}
210209

211210
/**
@@ -239,7 +238,7 @@ public function getFloatValue(string $flagKey, float $defaultValue, ?EvaluationC
239238
*/
240239
public function getFloatDetails(string $flagKey, float $defaultValue, ?EvaluationContextInterface $context = null, ?EvaluationOptionsInterface $options = null): EvaluationDetailsInterface
241240
{
242-
return $this->evaluateFlag(FlagValueType::FLOAT, $flagKey, $defaultValue, $context, $options);
241+
return $this->evaluateFlag(FlagValueType::Float, $flagKey, $defaultValue, $context, $options);
243242
}
244243

245244
/**
@@ -274,7 +273,7 @@ public function getObjectValue(string $flagKey, $defaultValue, ?EvaluationContex
274273
*/
275274
public function getObjectDetails(string $flagKey, $defaultValue, ?EvaluationContextInterface $context = null, ?EvaluationOptionsInterface $options = null): EvaluationDetailsInterface
276275
{
277-
return $this->evaluateFlag(FlagValueType::OBJECT, $flagKey, $defaultValue, $context, $options);
276+
return $this->evaluateFlag(FlagValueType::Object, $flagKey, $defaultValue, $context, $options);
278277
}
279278

280279
/**
@@ -286,7 +285,7 @@ public function getObjectDetails(string $flagKey, $defaultValue, ?EvaluationCont
286285
* @param bool|string|int|float|DateTime|mixed[]|null $defaultValue
287286
*/
288287
private function evaluateFlag(
289-
string $flagValueType,
288+
FlagValueType $flagValueType,
290289
string $flagKey,
291290
bool | string | int | float | DateTime | array | null $defaultValue,
292291
?EvaluationContextInterface $invocationContext = null,
@@ -353,7 +352,7 @@ private function evaluateFlag(
353352
);
354353

355354
if (!$resolutionDetails->getError() && !ValueTypeValidator::is($flagValueType, $resolutionDetails->getValue())) {
356-
throw new InvalidResolutionValueError($flagValueType);
355+
throw new InvalidResolutionValueError($flagValueType->value);
357356
}
358357

359358
$details = EvaluationDetailsFactory::fromResolution($flagKey, $resolutionDetails);
@@ -385,40 +384,45 @@ private function evaluateFlag(
385384
}
386385

387386
private function createProviderEvaluation(
388-
string $type,
387+
FlagValueType $type,
389388
string $key,
390-
mixed $defaultValue,
389+
bool | string | int | float | array | null $defaultValue,
391390
Provider $provider,
392391
EvaluationContextInterface $context,
393392
): ResolutionDetails {
394-
switch ($type) {
395-
case FlagValueType::BOOLEAN:
396-
/** @var bool $defaultValue */
393+
switch ($type->value) {
394+
case FlagValueType::Boolean->value:
395+
/** @var bool $defaultValue */;
397396
$defaultValue = $defaultValue;
397+
$resolver = $provider->resolveBooleanValue(...);
398398

399-
return $provider->resolveBooleanValue($key, $defaultValue, $context);
400-
case FlagValueType::STRING:
401-
/** @var string $defaultValue */
399+
break;
400+
case FlagValueType::String->value:
401+
/** @var string $defaultValue */;
402402
$defaultValue = $defaultValue;
403+
$resolver = $provider->resolveStringValue(...);
403404

404-
return $provider->resolveStringValue($key, $defaultValue, $context);
405-
case FlagValueType::INTEGER:
406-
/** @var int $defaultValue */
405+
break;
406+
case FlagValueType::Integer->value:
407+
/** @var int $defaultValue */;
407408
$defaultValue = $defaultValue;
409+
$resolver = $provider->resolveIntegerValue(...);
408410

409-
return $provider->resolveIntegerValue($key, $defaultValue, $context);
410-
case FlagValueType::FLOAT:
411-
/** @var float $defaultValue */
411+
break;
412+
case FlagValueType::Float->value:
413+
/** @var float $defaultValue */;
412414
$defaultValue = $defaultValue;
415+
$resolver = $provider->resolveFloatValue(...);
413416

414-
return $provider->resolveFloatValue($key, $defaultValue, $context);
415-
case FlagValueType::OBJECT:
416-
/** @var mixed[] $defaultValue */
417+
break;
418+
case FlagValueType::Object->value:
419+
/** @var object $defaultValue */;
417420
$defaultValue = $defaultValue;
421+
$resolver = $provider->resolveObjectValue(...);
418422

419-
return $provider->resolveObjectValue($key, $defaultValue, $context);
420-
default:
421-
throw new FlagValueTypeError($type);
423+
break;
422424
}
425+
426+
return $resolver($key, $defaultValue, $context);
423427
}
424428
}

Diff for: src/implementation/common/ValueTypeValidator.php

+9-15
Original file line numberDiff line numberDiff line change
@@ -74,21 +74,15 @@ public static function isDateTime(mixed $value): bool
7474
/**
7575
* Validates whether the value is valid for the given type
7676
*/
77-
public static function is(string $type, mixed $value): bool
77+
public static function is(FlagValueType $type, mixed $value): bool
7878
{
79-
switch ($type) {
80-
case FlagValueType::BOOLEAN:
81-
return self::isBoolean($value);
82-
case FlagValueType::FLOAT:
83-
return self::isFloat($value);
84-
case FlagValueType::INTEGER:
85-
return self::isInteger($value);
86-
case FlagValueType::STRING:
87-
return self::isString($value);
88-
case FlagValueType::OBJECT:
89-
return self::isStructure($value) || self::isArray($value);
90-
default:
91-
return false;
92-
}
79+
return match ($type) {
80+
FlagValueType::Boolean => self::isBoolean($value),
81+
FlagValueType::Float => self::isFloat($value),
82+
FlagValueType::Integer => self::isInteger($value),
83+
FlagValueType::String => self::isString($value),
84+
FlagValueType::Object => self::isStructure($value) || self::isArray($value),
85+
default => false,
86+
};
9387
}
9488
}

Diff for: src/implementation/hooks/AbstractHook.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace OpenFeature\implementation\hooks;
66

77
use OpenFeature\interfaces\flags\EvaluationContext;
8+
use OpenFeature\interfaces\flags\FlagValueType;
89
use OpenFeature\interfaces\hooks\Hook;
910
use OpenFeature\interfaces\hooks\HookContext;
1011
use OpenFeature\interfaces\hooks\HookHints;
@@ -21,5 +22,5 @@ abstract public function error(HookContext $context, Throwable $error, HookHints
2122

2223
abstract public function finally(HookContext $context, HookHints $hints): void;
2324

24-
abstract public function supportsFlagValueType(string $flagValueType): bool;
25+
abstract public function supportsFlagValueType(FlagValueType $flagValueType): bool;
2526
}

0 commit comments

Comments
 (0)